Slashdot Mirror


How Should a Non-Techie Learn Programming?

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?"

9 of 346 comments (clear)

  1. The tao of programming by Radres · · Score: 5, Funny

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

  2. PostgreSQL a better choice for database by Improv · · Score: 5, Insightful

    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.

    --
    For every problem, there is at least one solution that is simple, neat, and wrong.
    1. Re:PostgreSQL a better choice for database by Vahokif · · Score: 5, Insightful

      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.

  3. In my opinion by IICV · · Score: 5, Insightful

    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.

  4. Plethora of Options by cosm · · Score: 5, Informative

    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.

    --
    'We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.' RPF
  5. But why? by Anonymous Coward · · Score: 5, Insightful

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

  6. Learn Unix by znice · · Score: 5, Insightful

    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.

  7. Re:learn the standard way by interval1066 · · Score: 5, Funny

    High School/Jr.High

                    10 PRINT "HELLO WORLD"
                    20 END

    First year in College

                      program Hello(input, output)
                        begin
                              writeln('Hello World')
                        end.

    Senior year in College

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

    New professional

                      #include
                    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);
      }
      1;

    Experienced Hacker

      #include
      #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.
      ^D

    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.
      ^D

    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

    --
    Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
  8. Don't box the guy in! by mcrbids · · Score: 5, Insightful

    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.

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.