Catch up on stories from the past week (and beyond) at the Slashdot story archive


Forgot your password?

How Should a Non-Techie Learn Programming? 346

CurtMonash writes "Nontechnical people — for example marketers or small business owners — increasingly get the feeling they should know more about technology. And they're right. If you can throw up a small website or do some real number-crunching, chances are those skills will help you feed your family. But how should they get started? I started a thread with the question on DBMS2, and some consistent themes emerged, including: Learn HTML + CSS early on; Learn a bit of SQL, but you needn't make that your focus; Have your first real programming language be one of the modern ones, such as PHP or Python; MySQL is a good vehicle to learn SQL; It's a great idea to start with a project you actually want to accomplish, and that can be done by modifying a starter set of sample code (e.g., a WordPress blog); Microsoft's technology stack is an interesting alternative to some of the other technology ideas. A variety of books and websites were suggested, most notably MIT's Scratch. But, frankly, it would really help to get more suggestions for sites and books that help one get started with HTML/CSS, or with MySQL, or with PHP. And so, techie studs and studdettes, I ask you — how should a non-techie go about learning some basic technological skills?"
This discussion has been archived. No new comments can be posted.

How Should a Non-Techie Learn Programming?

Comments Filter:
  • by Radres ( 776901 ) on Friday July 30, 2010 @06:50PM (#33090692)

    Give someone a program, frustrate them for a day. Teach someone to program, frustrate them for a lifetime.

  • by Improv ( 2467 ) <> on Friday July 30, 2010 @06:51PM (#33090706) Homepage Journal

    I wouldn't start with database stuff until you have a programming language or two mastered, but when you do learn one, learn PostgreSQL. MySQL's SQL flavour is messed up and because their parser doesn't handle relational calculus well, you're stuck with a language that's unusuable for much of SQL without syntactic contortions.

    I wouldn't start with web stuff either - you want a classic programming background (which will be a bit depth-first) to see if you can handle it. If you can't, you probably should find another hobby - the world is full of bad code written by people who don't know what they're doing.

    • That's funny - I thought you were going to mention PostgreSQL over MySQL because of Oracle's interesting takeover leaving the future of MySQL uncertain.

      • Re: (Score:3, Interesting)

        by Improv ( 2467 )

        Nah - iirc, it's opensource, meaning that if need be, MySQL's development will be reconstituted under other leadership.

        I've had the same issues with MySQL since I first had to use it, partly issues with its parser being ridiculously bad at handling relational calculus (meaning you're stuck with relational algebra if you want your queries to scale, and eventually they will), its SQL dialect being obscene (oh god why do I grant privileges to nonexistent users to make them exist?), it not handling locking well

        • Nah - iirc, it's opensource, meaning that if need be, MySQL's development will be reconstituted under other leadership.
          That's true however postgresql is much freer than mysql. In particular mysql's client access libraries are under the GPL (with a few exceptions, e.g. for php). So if you want to write propietry apps against it (either now or in the future) you need a license that only oracle can sell you. IIRC at one point they were even trying to claim the GPL applied to the wire protocol.

          It's not an issue

          • MySQL Native Driver is a replacement for the MySQL Client Library (libmysql). MySQL Native Driver is part of the official PHP sources as of PHP 5.3.0.

            The older MySQL Client Library was written by MySQL AB (now Sun Microsystems, Inc.) and so was released under the MySQL license. This ultimately led to MySQL support being disabled by default in PHP. However, the MySQL Native Driver has been developed as part of the PHP project, and is therefore released under the PHP license. This removes licensing issues tha

    • Re: (Score:3, Insightful)

      by Vahokif ( 1292866 )
      I think MySQL's language is just fine for the kind of thing non-techies want to do.
      • Re: (Score:3, Insightful)

        by caerwyn ( 38056 )

        It is- but *learning* sql via MySQL is a horrible idea. It allows a lot of shortcuts that are both wrong and dangerous if you're not very sure of what you're doing; learners are much better off with *any* database that's more standards-oriented.

        • by Vahokif ( 1292866 ) on Friday July 30, 2010 @07:32PM (#33091174)
          Basic CRUD stuff is the same in any variant of SQL, and MySQL has the benefit of being available on free hosting. I think there's a time and place for advocating PostgreSQL, but this is not it.
          • Re: (Score:3, Insightful)

            by caerwyn ( 38056 )

            Uh, handling of nulls, empty strings, and default values are not the same as in anything else. They're also absolutely horrible practice and encouraging new users to learn them is flat out retarded.

            Also, I very pointedly didn't mention PostgreSQL. I advocated any standards-compliant DB. MySQL does not fit that bill.

    • by mcrbids ( 148650 ) on Friday July 30, 2010 @07:35PM (#33091212) Journal

      Writing "I want to be a programmer" is like saying "I want to be a doctor!". There are a million different sub-fields, from orthopedics (EG: fixing borken bones) to orthodontics (fixing teeth) and there's a million details to know for each field.

      Programming is a big, big field and covers everything from hacking firmware in assembler to writing SQL queries to using macros in Excel. Laugh all you want to, but the lowly Excel macro quite literally runs Billion-dollar enterprises, and is legitimately a programming art, just as much as assembler or kernel coders in that it gets the job that's needed, done.

      Start with finding out what you are trying to accomplish, and then work from there! My goal was to build and sell information management tools, and for me, PHP and SQL seemed like good tools for the job. They haven't disappointed me, for my focus, but then, I'm not trying to build a 3D FPS, either!

      Then, get the right tool for the job, and roll with it.

      • by Shadow Wrought ( 586631 ) * <> on Saturday July 31, 2010 @12:12AM (#33092930) Homepage Journal
        Start with finding out what you are trying to accomplish, and then work from there!

        So very true, regardless of what you're trying to learn. If it doesn't relate back to something you're already interested in you're not going to be able stick with it over the long haul.
      • Don't box the guy in... Writing "I want to be a programmer" is like saying "I want to be a doctor!". There are a million different sub-fields, from orthopedics (EG: fixing borken bones) to orthodontics (fixing teeth) and there's a million details to know for each field.

        So what you're saying is, don't box the guy in, even though it's really, really large box that he'll never see the sides of?

    • I wouldn't start with database stuff until you have a programming language or two mastered

      I would start with either database or with programming languages. Procedural programming requires a different mindset than the set logic of databases. Experienced professional programmers can have a hard time dealing with database sets properly never mind someone who is trying to just dabble in both.

      But to the original question, you could read a simple book on SQL like "Sam's teach yourself sql in 10

      • by Improv ( 2467 )

        Oracle must've improved by leaps and bounds - last I used it (some years ago), it was one of the hardest databases to install casually, and its tools were relatively user-unfriendly.

    • by Tim99 ( 984437 )
      I too like PostGreSQL but, unless the OP is expecting more than a few hits per second has tens of millions of rows of data, SQLite is easier to learn deploy and set up. There are nearly as many friendly interfaces for SQLite as there are for PostGreSQL - The SQLite Manager extension for Firefox is worth a look.
  • Honestly some of the best help online is online follow along Examples by tech experts who want to build a name for themselves. Couple that with the forums that get indexed rather highly and you can read up on a discussion about what you need to do.

    I can't name anything specific because it all depends on the rankings this month. But self teaching yourself is as easy as entering "[what you want to do] Tutorial"

    If anything confuses you in the tutorial, such as terminology, Google that! Need help setting up a c

  • In my opinion (Score:5, Insightful)

    by IICV ( 652597 ) on Friday July 30, 2010 @06:53PM (#33090718)

    In my opinion, as someone who's learned a few programming languages in his lifetime, the best way to learn a programming language (or any new technique, really) is to pick a task for yourself using that technique and figure out what you need to do to get that task done. For instance, I learned Javascript primarily because I wanted to query a couple of Sharepoint sites and display the resulting information somewhere else, and Javascript was as reasonable way of doing that as any. I learned Perl because I had a bunch of information in XML files, and I wanted to apply an XSLT transformation to all of them and concatenate the result together (that's also how I started learning XLST). I learned Java Applets because I was bored in a high school computer science class, and decided to make a 2D gravity simulation thing. I learned C++ because my dad had written his own custom version of tcpreplay, and offered me $20 to port it to Windows.

    Just pick something that sounds like fun, figure out how to do it in the language of your choice, and do it.

    • I completely agree: the best way to learn programming is to be born to a parent who has programming experience. Given that the world supply of programming experience was probably thirty or forty person-years on the day I was born, I understandably failed at this.

      Your odds are better nowadays, of course, but still you only get one shot at it. What I am trying to say is that your experience is probably still not that helpful for most people.

  • They shouldn't (Score:3, Insightful)

    by jawtheshark ( 198669 ) * <slashdot.jawtheshark@com> on Friday July 30, 2010 @06:53PM (#33090722) Homepage Journal

    No, really... They shouldn't. Programming is a way of thinking, computer science even more so and if you haven't got that way of thinking, you shouldn't touch it. I'm really sorry. My wife doesn't understand a thing I do professionally (but it brings in the bucks, so we can eat) and I tried explaining. It just isn't her world and even the basic maths behind it are beyond her. Of course, I don't understand a thing about art, which is her thing.

    This is akin to the question "I have $YOUNG_FAMILY_MEMBER who likes to game, how do I get him/her programming." You don't... Unless they show real interest it's a waste of time.

    • Re: (Score:3, Interesting)

      by MikeFM ( 12491 )

      I think it really depends if they want to learn and are capable of grasping the material. I'll agree that not everybody can learn programming, it really takes a certain way of thinking, but I wouldn't say that trying wouldn't be useful. Even for people that ultimately are not going to be able to be programmers it is good to have some understanding of what goes on. Maybe then we can stop getting clients/employers that think it's like pulling up a word processor and typing a few buttons.

      I think it was Rudy Ru

    • Re: (Score:3, Insightful)

      by mrbene ( 1380531 )

      Have to heartily agree here. I'm a techie, I understand code easily. It's natural for me.

      However, I do agree with the OP that people in not-directly-technical roles should have more confidence with technology. Whether this comes from mucking around with SQL or HTML, or from just learning that most mistakes can be undone with ctrl-z, I think that gaining confidence through doing something that they actually want to accomplish is excellent.

      For example, I gained confidence in home improvements by actually

    • Re: (Score:2, Insightful)

      by mysidia ( 191772 )

      "Computer science is no more about computers than astronomy is about telescopes." --Edsger Dijkstra

      You don't have to be a computer scientist to write a program or learn programming.

      Computer programming is a vocational skill. Programming is not computer science.

      Although methods of computer programming, and algorithms are subjects of study in computer science; practitioners / engineers do not require a knowledge of CS, only knowledge of the right APIs for their environment (which implement the algo

    • No, really... They shouldn't.

      Yeah, the question seemed a bit ill-formed. If you can program you *are* a techie, so it might sound like asking how a non-techie becomes a techie. But it was phrased as if the person in question would remain a non-techie.

    • Yes, it is a way of thinking but that's a reason it should be taught. Even if they are a non-techie and never going to become a programmer there's still merit in teaching them a new way of thinking. Anyone can learn the basics and as most programming books illustrate it's really no different than creating a recipe. So it really is a good idea to teach people the basics of programming.
      Especially in this case where people are asking to be taught.

  • I like the suggestion to use PHP, it's perhaps the closest we have to oldfashioned BASIC. You hardly need anything to get started, apart from web hosting, an FTP client and Notepad. The language is well documented, its error messages are often helpful (except for that crazy hebrew one), and you get immediate reward and feedback when you refresh the page. It also has real world uses. Programming goes naturally from there, if you're curious and stick with it.

    • by Twinbee ( 767046 )

      You don't even need webhosting or an FTP client if you use EasyPHP - just go through localhost in your browser: []

      Otherwise it's a pig to keep reuploading to test for bugs etc.

    • by ojustgiveitup ( 869923 ) on Friday July 30, 2010 @07:39PM (#33091244)
      This seems to be the basic content of ~80% of replies in this thread. Acknowledging the danger of being accused of fanboi/hater-ism, I simply don't get what makes PHP good for beginners. All criteria you've mentioned are true for all modern web stacks. Let's take python for instance (even though I think ruby is in fact easier for beginners, it seems Slashdot is a ruby-hostile crowd) - hosting, check - well documented (disagree that PHP is but ok...), check - error messages (the fact that there even *is* a crazy hebrew one in PHP makes this laughable but ok...), check - immediate reward and feedback when you refresh a page, check - real world uses, check - natural learning curved towards better/more advanced programming, check times a bunch over PHP. It is also far more readable and consistent, does not encourage shoot-yourself-in-the-foot-isms to the extent of PHP, has generally better libraries, a very similar scalability and performance story, and equivalent if not better frameworks surrounding it. So I ask - what actually makes PHP better for beginners? Is it just because we all began our web programming in PHP so we think that's the right way, or does it actually have redeeming points? Now, Drupal and Wordpress are a couple of the most excellent and hit-the-ground-runningest of the world's myriad content management systems, so if that's what we're talking about then yes, by all means, use one of those to spin up an easily extensible site or blog very quickly and bring PHP along for the ride, but I see no reason to start from *scratch* with PHP. (Not meaning to flame, though it comes off that way - I'm very curious what you (or anyone else) believe makes PHP easy for beginners.)
      • Re: (Score:3, Informative)

        by julesh ( 229690 )

        error messages (the fact that there even *is* a crazy hebrew one in PHP makes this laughable but ok...), check

        I should explain this for anyone who is perplexed as to why PHP has an error message in hebrew: it doesn't. The name used by the parser to refer to one of its operators ("::") is taken from hebrew ("Paamayim Nekudotayim", meaning "double colon"). This is what happens when your parser is developed by Israelis. The error message is, however, in english, only the operator name is not.

    • You hardly need anything to get started, apart from web hosting, an FTP client and Notepad.

      Compare that to say, perl where all you need is . . . perl, or c where all you need is gcc (or any other compiler).
      The point being: web hosting is not something the average non-techie has sitting around for when he decides to give it a go, nor is it something he is going to be likely to get in a matter of minutes.
      If you have a half-decent linux distro you have the tools to start writing c, c++, perl, or python on your computer right now, if you don't have a decent distro, those tools are a command away.

  • !Programming (Score:3, Insightful)

    by StikyPad ( 445176 ) on Friday July 30, 2010 @06:57PM (#33090760) Homepage

    What you are describing is not programming; it's web design and database administration. They may contain elements of programming, and they're both (typically) done on computers, but they're generally regarded as separate skill sets these days.

  • You might start with something like Scratch to learn the concepts.

    Then I'd dive into PHP or Python. PHP is good because you feel like you are really doing something since it shows up on the web. Python on the other hand produces faster programs and has a very clean syntax. HTML, Javascript, and CSS are good if you're learning PHP anyway but do yourself a favor and avoid mixing HTML, CSS, Javascript, SQL, and PHP together. Learn to separate your code right from the start. SQL is always useful to know and has

  • It really depends on what exactly you want to do and what you have. Apple's automator will be good to learn some things. Those Lego kits are a great way to combine programming with real world results and not just get on screen results. Dylan is an easy language. Scheme is more to teach language theory. Lisp is a diiferent way to think of things. C is the great-granddaddy of the other major family of langaues and need-to-know if one gets into programming. Later major languaes will be a hybrid of ideas

    • by MikeFM ( 12491 )

      Automator is actually pretty awesome. Yesterday fricken iTunes got stuck wanting me to hit 'Replace', for each of the 2000+ iOS apps I have, when cleaning up my library. No cancel button. No do for all button. (Doh. C'mon Apple iTunes is so beneath your standards.) I pulled up Automator and recorded clicking the button and told it to loop over it. In a couple seconds I had a script that kept pressing that damn button until it was done. So Apple sucks for iTunes but is awesome for Automator.

      Most web designer

  • A: The same way as a techie. Long answer: Learn C, Haskell, Scheme, or whatever suits your needs by writing a lot of small to mid-sized programs. Learn about data structures and how they are internally represented on your machine. Sit down and actually do something instead of messing around with drag & drop RAD tools. That's how you learn it. (In my opinion, at least.)

    • Re: (Score:3, Insightful)

      Hmph. This reminds me of a recent article about how the author had been scared off of Vim numerous times because people kept telling him to turn off his arrow keys, don't use "simplified" versions like GVim or MacVim, etc. No. This is wrong-headed. We don't teach people number theory right off the bat because that's what "real" mathies work in, why would we teach non-technical people C and (good lord!) Haskell just because that's what "real" techies use? These are great, useful languages, and there is plent
  • by Chirs ( 87576 ) on Friday July 30, 2010 @06:59PM (#33090800)

    I've been working in programming for over a decade and haven't had to deal with CSS or database work at all. The last website stuff I did from scratch was pure HTML. Arguably this isn't great from a generalization point of view, but I've got most of a decade of experience with low-level linux kernel and application coding, high performance networking, high reliability system design, etc.

    As others have said...the place to start depends totally on what they want to accomplish. I started out as a kid typing in simple games in BASIC from a magazine, then debugging them trying to find the typos when they didn't work right away. Now maybe it might make sense to create a simple iPhone app (or the equivalent for whatever other phone one may own).

    • Seems to me the implication of the poster is that they want to get ramped up quickly doing things that people can use easily, soooo... no, not kernel hacking or high performance networking or high reliability system design. You're right about iP(hone|ad) apps, Android apps, web apps to run on those and other mobile platforms, web apps to run in normal browsers, javascript games, facebook games. Actually looking at that list it's fairly obvious where to start - javascript (and I would go ahead and add jQuery
  • Why not look at a language like, say, AWK? Really basic, great for creating useful filter programs, and fairly widespread.
  • Plethora of Options (Score:5, Informative)

    by cosm ( 1072588 ) <> on Friday July 30, 2010 @07:05PM (#33090854)
    Couple points:

    1. You have to get your mind in the 'programming' mindset. Learning programming isn't necessarily purely about being a techie. You need to have solid logic skills. Much of programming is spent just getting logic right. Check out Boolean Logic [] for an launch point. The knowledge you gain from briefing this area will carryover into many, many programming languages. Programming *is* logic.

    2. Learn what you want to program for. Pick a startup project. Is it a website you want to make? HTML & CSS is very different than learning C or C++, likewise, SQL is very different than assembly. Not that certain concepts don't carry over, but much of being a jack of all trades is simply having the ability to have good conditional logic skills, and the ability to Google things quickly and learn to apply them as you go. You don't have to become a master of all languages, or hell, even one language, but if you are truly *interested* (thats the keyword, if your not interested, its just not going to happen), and you have done a little programming in a couple of simple languages, then you will be in a good position to progress to more difficult projects.

    3. Learn what you want to program for. Again. Repeated point. There are hundreds of programming languages, platforms, architectures, styles, libraries, etc. Pick something you are interested in, read about it a little bit, and if it looks like the learning curve isn't too ridiculous, start there. Perhaps a simple text based JavaScript browser game. At the end of the day you will know a bit of CSS, HTML, and JavaScript if you put your mind to it. But thats just one example.

    4. W3C. This [] website is a good starting point for all things web.

    5. Chrome Experiments [] If you really like web, check out the future of browser bling. Heavy JavaScript and HTML5

    6. Databases. Not the most mentally entertaining, but you will need the knowhow to connect, select, insert, update, and delete data if you are doing anything with data. I am a Microsoft guy, and I can tell you that the Express Editions [] of Visual Studio are a greating starting point for a newbie, at zero price-point, and bundled with SQL Express [], thats a good place to begin.

    7. Also, places like CodeProject [], StackOverflow [], and CodePlex [] are great tools for questions ranging from the most basic to the most advanced of topics, and downloading sample code and live projects for tinkering around with.
  • The way a lot of techies learn it is to take a programing course in junior high school or high school. Then they may go off on their own and develop these skills further.

    I've seen the same kind of courses offered at community colleges. Some techies like myself can read an instruction manual and just do it. Other people prefer the structure of a taught course.
    • by interval1066 ( 668936 ) on Friday July 30, 2010 @07:25PM (#33091080) Homepage Journal

      High School/Jr.High

                      10 PRINT "HELLO WORLD"
                      20 END

      First year in College

                        program Hello(input, output)
                                writeln('Hello World')

      Senior year in College

                        (defun hello
                            (cons 'Hello (list 'World))))

      New professional

                      void main(void)
                          char *message[] = {"Hello ", "World"};
                            int i;

                            for(i = 0; i = 0) {
            while(defined($arg=shift(@ARGV))) {
                $outfilename = $arg;
                open(FILE, ">" . $outfilename) || die "Can't write $arg: $!\n";
                print (FILE $msg);
                close(FILE) || die "Can't close $arg: $!\n";
        } else {
            print ($msg);

      Experienced Hacker

        #define S "Hello, World\n"
        main(){exit(printf(S) strlen(S) ? 0 : 1);}

      Seasoned Hacker

        % cc -o a.out ~/src/misc/hw/hw.c
        % a.out

      Guru Hacker

        % cat
        Hello, world.

      New Manager

        10 PRINT "HELLO WORLD"
        20 END

      Middle Manager

        mail -s "Hello, world." bob@b12
        Bob, could you please write me a program that prints "Hello, world."?
        I need it by tomorrow.

      Senior Manager

        % zmail jim
        I need a "Hello, world." program by this afternoon.

      Chief Executive

        % letter
        letter: Command not found.
        % mail
        To: ^X ^F ^C
        % help mail
        help: Command not found.
        % damn!
        !: Event unrecognized
        % logout

    • Eek! Makes me wonder if you're 1) trolling, 2) realize that's absurd but think it's 1337, or 3) think it actually makes sense. Whichever it is, these people have *no* use for asm or tcp/ip, little use for C, and should learn something simpler than PHP, like Python. Maybe a good list for their next iteration through the "what now?" knowledge acquisition loop though, if you reversed the order. Also, I would note that a great way for non-technical people to actually understand how computers work, perhaps on th
    • Re: (Score:3, Informative)

      by ChrisMaple ( 607946 )

      Leaning an assembler is a good place to start, but for a beginner to learn the x86 thoroughly is a bad idea. The principles of an assembler and its relation to hardware is important, the minefield that is the x86 design is discouraging.

      Learning K&R C, which is now obsolete, is a mistake. Learn ANSI C and something of the best extensions.

  • But why? (Score:5, Insightful)

    by Anonymous Coward on Friday July 30, 2010 @07:07PM (#33090888)

    They shouldn't .... small business owners dont feel pressured to learn plumbing - they hire a plumber.

    • mod up! (Score:3, Interesting)

      by Black Parrot ( 19622 )

      They shouldn't .... small business owners dont feel pressured to learn plumbing - they hire a plumber.

      Best response posted so far.

    • Re: (Score:3, Insightful)

      by demonlapin ( 527802 )
      Virtually every small business owner does small things themselves to save money. Not every plumbing problem needs a plumber; sometimes you just need Drano, or you just need to snake the pipe. I don't try to fix my air conditioner, or my main sewage line out of my house, but if you can't handle the P trap in your sink, you're at the mercy of anyone who wants to screw you. I'm not a mechanical engineer, but I can change my own oil. (I don't, because I hate crawling under a car and I can easily afford $30 f
      • Re:But why? (Score:4, Insightful)

        by LodCrappo ( 705968 ) on Friday July 30, 2010 @11:44PM (#33092812) Homepage

        if the OP was asking how to learn some basic PC maintenance, save on a couple easy repair calls, maybe even set up a simple LAN, sure. but he is asking about how to do things that are well beyond the skill level of a "handy guy". if he is unable to distinguish between the "simple fix, save a buck" stuff and the "you probably suck if you haven't been doing this every day for 10 years, and maybe even then" stuff... well all the more reason to discourage him from going further.

  • Excel almost feels like writing a mini program in one cell. One cell can have several if conditions and check multiple conditions and return a result.

    This will teach them logic and how to assess data and get out of it what they want.

    Then as they get more comfortable and then realize they are doing the same stuff in excel over and over, they can branch out into vba.

    And for learning it, they can record macros and see how functional (albeit bloated) code works and modify it to their liking. Tell me another e

  • Learn Unix (Score:5, Insightful)

    by znice ( 1565751 ) on Friday July 30, 2010 @07:13PM (#33090936)
    I have found that far and away the most important thing that my Computer Science program at University has required of me is that I learn Unix. Both of the scripting languages that you mention (PHP and Python) are, in a sense, descended Bash/Shell, and you will find that most of what you will be doing with them is automating procedures that could otherwise (though less practically) be accomplished via command-line utilities like cat, sed, grep, wget/cUrl, etc. The internet is essentially built up around Unix paradigms (those "/"s in URLs: the Unix directory separator, and full URL paths are generally representative of the contents of an actual subdirectory -- the web root -- on the server. I'm sure I'm telling most slashdotters something that they have known since their early teens, but the question is being asked by a beginner), so knowing how to work a Unix (or Posix) OS like any one of the major Linux distributions will be invaluable for you and, I would say, should be your starting point.
  • Good Lord, No. (Score:3, Interesting)

    by dcollins ( 135727 ) on Friday July 30, 2010 @07:13PM (#33090950) Homepage

    "Nontechnical people — for example marketers or small business owners — increasingly get the feeling they should know more about technology. And they're right. If you can throw up a small website or do some real number-crunching, chances are those skills will help you feed your family."

    If you are running a small business, marketing, and supporting a family -- then at this point you don't remotely have the time to learn programming from the ground up. (All of HTML, CSS, SQL/MySQL, PHP/Python on a business-critical project?)

    Learning programming to that extent takes several years of alone time.

  • It's like asking: How can I learn to be a ( surgeon, lawyer ) in a few days? After all, I can carve a turkey already and I've watched every season of "LA Law".

    Programming may seem easy-- after all, it's just typing, right?

    Well, surprise, surprise, it's a lot harder than those "[Language X] For Dummies" books let on.

    In fact some of us went to school for 4 years and just learned the basics. Maybe after another ten years you get good at it. No shortcuts.

    • That's the fundamental misconception I always try to address with non-programmers. Programming APPEARS to be about typing. It is REALLY about thinking.

      • It's possible that all those times I had to wait in line to get thirty minutes at a terminal made me a better programmer. I got used to thinking a lot about what I was going to write before typing it in. Pity I don't apply that to slashdot posts.
  • by brasselv ( 1471265 ) on Friday July 30, 2010 @07:19PM (#33091010)

    ....but the "non-technical" person that starts with this type of mindset, I suspect, won't get too far. Learning anything complex and new requires enduring efforts and a strong will, plus a certain degree of intellectual curiosity, and a sense of purpose.

    "Let's start learning something about X", especially if X is as broad as "technology" is too generic an intention, to fit what above.

    It reminds me of man who goes at the library and says: "I have decided to get an education. Which books will get me educated?"

  • HTML, Notepad (Score:3, Insightful)

    by Bluesman ( 104513 ) on Friday July 30, 2010 @07:20PM (#33091032) Homepage

    Odds are you'll never have enough time to learn programming at the depth that someone who is very good at it knows it.

    Start small. Learn how to write a static web page using nothing but Notepad in Windows. Then, when you've mastered that, try using CSS to change the way it looks.

    At this point, you can get into Javascript, which is a fantastic language for learning. Try to make something on the web page change when you mouse over it. Experiment with changing text fields in Javascript.

    Then, write a simple "desktop" calculator as a web page.

    This will likely take you a few months or weeks if you spend a lot of time at it. Remember, use Notepad only. Don't worry about making it work in anything but Internet Explorer (or your browser of choice) because that will make you insane.

    When you can write Tetris [], then you're ready to work with databases and servers.

    Don't use MySQL, it's an abomination. If you have Microsoft Access, start with that. Make a project in that that real people will use. If maintaining it becomes difficult, it's because you don't know enough database theory. Figure out on your own why you want data to be fully normalized and only flattened with many saved SELECT queries. Try to figure out how to write the queries in SQL using the (excellent) query editor. Write UNION queries.

    Now you're ready for a server and web site.

    • Shoot, sorry to reply to myself, but the alternative to MySQL is PostgreSQL, and it's much, much better. Trust me on that. Nobody gets it at first, but anyone who spends any significant amount of time using RDBM's properly will end up wondering why MySQL even exists.

  • by epine ( 68316 ) on Friday July 30, 2010 @07:22PM (#33091058)

    In watercraft, there are two sides to the tree: watercraft where buoyancy is independent of orientation (e.g. Zodiac) and watercraft where orientation is everything. In the second group, you have canoes/kayaks with great initial stability and terrible final stability, and you also have the converse. For propulsion, you have gas eating outboards, propulsion by environmental agents, and self propulsion. And you have a choice between artificial materials and natural materials.

    C is instructive if you stay close to the shoreline. LISP is a kayak. You can roll over and come up the other side. Some people like that. Python is a reasonably nimble rowboat with room for a picnic cooler. PHP is a powerboat with an onboard mini-bar in a deadhead lagoon. Java is a twin Zodiac catamaran. Never sinks in the water, but watch out for the trees. C++ is a canoe with two gun decks and side mounted chainsaws (sorry, Bjarne). Name your pleasure.

    I'm partial to the wood-canvas Chestnut Prospector, paddling solo in a sheltered bay. The one thing an amateur absolutely needs to avoid is going bow up against a cross-wind.

  • Visit your local Barnes and Noble. Find books on the programming language of your choice. Buy them. And instead of leaving them lying around - READ them.

    Get your hands on a compiler for the language of your choice, try out the examples in those books (DO NOT use the included CD's, that's the lazy man's way). Pay attention to the code you are typing. Compile, run, try to figure out what's happening. Look for tutorials on the internet, and do the same.

    Finally, assign yourself SIMPLE projects and try to write

  • I've heard that there are these places called community colleges that supposedly have these "class" things. If you don't want that, you could probably read a book or a website or something.

    Worst. Ask Slashdot. Ever.

    • by cosm ( 1072588 )

      Worst. Ask Slashdot. Ever.

      You are either trolling, or have short memory, for I am fairly positive that How To Get a Game-Obsessed Teenager Into Coding? [] falls much closer towards your categorization. At least this question focuses on self-betterment, whereas the previous question is about casually pointing somebody towards an orange, although they currently enjoy apples.

  • Sorry, non-techies don't get it and never will. If you want to spend money on lessons, forget that too. The only way to be a techie is to pass the proficiency test: Do you love this stuff more than life, wife, family and normal hours? Do you do it because the bug has bit you, and you can't help yourself? More specifically, if you're a M$ nerd, have you memorized the keyboard, and your hands know all the shortcuts -- and I do mean ALL the shortcuts -- better than your brain does? Was your first Linux S
  • Scratch [] or AppInventor for Android [] could be good starting steps. From there, will be easier to go then to more "textual" programming languages.
  • Most programmers (at least the ones I know, including myself) didn't start with such lofty goals. We also started very young - I started in middle school writing tiny little BASIC programs on a TRS-80. It took me several years, and lots of tiny, simple programs, before I even realized I had any sort of actual talent for it, much less the desire to do it for a living. Then I went to college and spent several more years learning programming at a purely academic level - again, lots of relatively small, simple

  • "Nontechnical people -- for example marketers or small business owners -- increasingly get the feeling they should know more about technology. And they're right. If you can throw up a small website or do some real number-crunching, chances are those skills will help you feed your family. But how should they get started?"

    Every application will have tools that are more or less appropriate for the task at hand. Even just the two you listed -- throwing up a small web site and doing serious number crunching, are

  • For live practice problems check out [] There's book-learning of programming, but then you also really need practice, and that's what codingbat is about. Disclaimer: my site, but hey, it's free.
  • by meburke ( 736645 ) on Friday July 30, 2010 @08:06PM (#33091508)

    If you can't write programs better than you phrased your question you will be no good to anybody. Learn to think and write clearly.

    I suggest you start with a book similar to, "Programming Logic and Design" by Farrell [] . This approach teaches you how to think about solving problems using computers, and you will not be stuck in any specific language. There are already too many people out there who learned a computer language and jumped to the conclusion they were programmers.

    When you do pick a language, pick a GOOD source for learning. I like the books written by Charles Petzold or the books produced by Deitel and Deitel. Pick a useful language like C/C++ if you can.

    Make a list of all the things you would like to program if you could, then start with the smaller ones and work forward. Learning to program Excel spreadsheets will teach a a LOT about regular programming, including how to relate to a database. If you are serious about database applications read Joe Celko's books; they will save you LOTS of time and save you from writing too many embarrassing apps.

    When you get so you can produce some decent programs, polish up and get some depth by learning Assembly and LISP.

    With all this as a foundation, you will have a terrific overview and some solid competency in programming. You can do whatever you want. You will have the mental skills to learn any language and do good work.

    You might wonder if you can actually learn programming by reading on your own; the answer is NO! You must program to attain the skill. I have a friend who used to be an electronic organ repairman. He saw that the future was not in his knowledge of electronics, but in swapping out cards in the organs. He took a job on an oil rig for six months and learned to program from Petzold's book on Windows Programming during his off time. Three years later he was earning over $200/hr as a contract programmer. Much of his success has to do with the high standards he sets for himself.

    Since it won't happen overnight, you might want to think about short courses offered by DeVry or a similar institution.

    Good Luck, and have fun.

  • Seriously, what's the point? I'm not saying it's pointless, but if the goal is to learn more about technology, why programming? Unless you're actually going to use it somehow, it's going to be a tremendous pain in the butt to learn and retain all these new ideas. Even if you do learn a bit about programming, there are always going to be professionals out there that can do it faster, more efficiently, and more securely than you can -- and if it's something for a business, you should probably be going with th
  • Game Maker (Score:3, Informative)

    by Purity Of Essence ( 1007601 ) on Saturday July 31, 2010 @10:36PM (#33099054)

    I'll probably be vilified for this, but if you are using Windows (or Mac), try Game Maker (Mac version is beta). It's a good introduction to a lot of programming concepts using a construction set like metaphor. After you learn the basics, it's easy to move to just code. Game Maker is free, many schools use it, and it was developed by university professor as a teaching aid. []

    Read the manual, do the tutorials, work your way up to GML code, take your questions to the GMC forums. Once you learn GML (which is similar to C and PHP, but allows Pascal style code as well), you'll be able to pick up other languages easily. Most programming languages are very similar.

    There is also a book, The Game Maker's Apprentice, if you feel the need to purchase something. []

Time to take stock. Go home with some office supplies.