Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

How Should a Non-Techie Learn Programming?

Soulskill posted more than 4 years ago | from the at-gunpoint-is-not-a-valid-answer dept.

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

Sorry! There are no comments related to the filter you selected.

Why should a non-techie learn programming? (-1, Troll)

Anonymous Coward | more than 4 years ago | (#33090646)

That question needs answering first.

what problem are you try to solve? (3, Insightful)

peter303 (12292) | more than 4 years ago | (#33090688)

Once you clarify that, then you can look at the range or software and hardware solutions, which could include some programming.

configurable software toolkits, e.g. Excel (1)

peter303 (12292) | more than 4 years ago | (#33090804)

These are sometimes called application specific systems (or in the old days 4th generation languages). The toolkit provides a lot of useful pieces like data types, input and output, pre-programmed routines. You then connect the dots. For example a spreadsheet is a table-oriented formula translator. Simple table operations are pretty easy to program. But you can get arbitrary hairy with all the extras they supply. At some point Excel programming would become too obtuse. Then you would drop out of such a system into a more general programming system.

Mathematica or Mathlab is another example. They are oriented into translating mathlike formulas into other formulas. Then inserting ranges of numbers and obtain graphical outputs.

Because every journy has a first step... (1, Funny)

Anonymous Coward | more than 4 years ago | (#33090808)

Start with what a lot of old pharts did, buy a cheap Apple II from fleabay and start coding in Applesoft BASIC... (Commie64 is for 1053r5)

Re:Why should a non-techie learn programming? (1)

squidfood (149212) | more than 4 years ago | (#33090816)

Car analogy alert: Why should a non-mechanic driver learn the basics of internal combustion and what the spark plug thingie does?

Re:Why should a non-techie learn programming? (1)

mysidia (191772) | more than 4 years ago | (#33090974)

Why should a non-medic learn CPR?

Re:Why should a non-techie learn programming? (4, Insightful)

nobodylocalhost (1343981) | more than 4 years ago | (#33090818)

Small business want to save money by making websites on their own... unfortunately they don't have the know how nor the time to do it. Rather than learning to program, i would suggest learn to spot the technical BS. It is far better to pay a professional firm that does design and site programming since they are less likely to open some blatant security holes to the world. Knowing how to program does not equal knowing how to program well. When your livelihood is on the line, spending couple hundred bucks is much cheaper than having your business go under because the site you wrote over the weekend got hacked by some automated drone and all your client info were stolen.

Re:Why should a non-techie learn programming? (3, Interesting)

Kral_Blbec (1201285) | more than 4 years ago | (#33090870)

Very good point. I contest the claim that "If you can throw up a small website or do some real number-crunching, chances are those skills will help you feed your family. " IMO its more likely to just be a black hole of time and resources.

Re:Why should a non-techie learn programming? (1)

mysidia (191772) | more than 4 years ago | (#33090946)

Because they can?

Drupal. (0)

Anonymous Coward | more than 4 years ago | (#33090662)

Learn Drupal. PHP + MySQL + HTML + CSS + JS

Re:Drupal. (1)

unity100 (970058) | more than 4 years ago | (#33091006)

yes learn drupal, and enter a world of shit. developer hostile, development hostile code. []

practice (1, Interesting)

Anonymous Coward | more than 4 years ago | (#33090674)

Once a day for five days for a year they should practice with the programming language of their choice.

There is no magic bullet, you're not going to learn Java or Python in 20 days with those dunderheaded, oversized volumes.

Just work at it and you'll get better.

Also: []

Re:practice (4, Insightful)

Meshach (578918) | more than 4 years ago | (#33090766)

Agreed. The asker seems to be looking for some silver bullet there really is none. Ultimately it dies not matter what language you use or what paradigm you subscribe to. The only thing that will make you proficient is practice.

Maybe the best option is to take an introductory programming course at a community collage and see if you like it?

Re:practice (1)

jawtheshark (198669) | more than 4 years ago | (#33090896)

community collage

I guess you learn how to cut and paste paper very well in those.

Re:practice (1)

M. Baranczak (726671) | more than 4 years ago | (#33091094)

That's called "code re-use".

Re:practice (1)

DeadDecoy (877617) | more than 4 years ago | (#33090968)

I do think, however, it depends on your task. It helps to know whether you're going to do application programming (java, c++) or web programming (php, javascript, ruby, html) or academic programming (perl, python, R) if you just want some surface level knowledge to accomplish a one-time task. Otherwise I'd recommend a few courses, books, and practice to establish a reasonable foundation for coding. The former is quick but you'll be limited in your ability to complete tasks quickly and the latter has a steeper, more time-consuming learning curve but you'll be more capable at solving a wider variety of (automated) problems. Just a cautionary note, computers won't be able to solve all the problems a PR team can dream up within the constraints specified by management.

The tao of programming (5, Funny)

Radres (776901) | more than 4 years ago | (#33090692)

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

Re:The tao of programming (1)

nobodylocalhost (1343981) | more than 4 years ago | (#33090900)

I don't know... with crap like this: []
a program will frustrate them for years to come try tying it to every other piece of software they use.

What does the non-techie want to program? (1)

optikos (1187213) | more than 4 years ago | (#33090694)

If the nontechie wants to make a webpage or if the nontechie wants to interface with hardware, then the choice of languages and knowledge differ markedly.

Simple! (1, Interesting)

Anonymous Coward | more than 4 years ago | (#33090698)


Install Quake, get and FrikQCC then go nuts making Quake into something that's not Quake. You'll learn a lot of fundamentals from the trial and error alone!

Hey, it's how the greats started.

PostgreSQL a better choice for database (5, Insightful)

Improv (2467) | more than 4 years ago | (#33090706)

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.

Re:PostgreSQL a better choice for database (1)

Monkeedude1212 (1560403) | more than 4 years ago | (#33090786)

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:PostgreSQL a better choice for database (2, Interesting)

Improv (2467) | more than 4 years ago | (#33090940)

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 (although it has improved remarkably on this front over the years), and a few other smaller things.

Of relational databases, I learned Oracle first - maybe this makes my preferences a bit "stuffy", but it's been very rare that I've met systems people who, given a project using MySQL, won't say that they wish they had started it with PostgreSQL, Oracle, DB/2, or one of the other choices people have. MySQL is the PHP of databases.

Re:PostgreSQL a better choice for database (1)

petermgreen (876956) | more than 4 years ago | (#33091070)

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 for php webapps but it's certainly something to consider if you think your database may ever need to be accessed in other ways or if you are learning a DB with the intention of using it in many future projects.

Re:PostgreSQL a better choice for database (1)

Frankenshteen (1355339) | more than 4 years ago | (#33091034)

Reads like contortions came up because the original question mentions analysis, and mysql - while a dandy persistant data store - isn't much on the analytics. But i'd disagree with improv wrt HTML/CSS. For most; the interweb is what computers are for. The capacity to self publish, maybe even do something revenue generating with slick analysis is a worthy skill. The more that have that, the more info the rest of us get to scrape.

Re:PostgreSQL a better choice for database (2, Insightful)

Vahokif (1292866) | more than 4 years ago | (#33090802)

I think MySQL's language is just fine for the kind of thing non-techies want to do.

Re:PostgreSQL a better choice for database (2, Insightful)

caerwyn (38056) | more than 4 years ago | (#33090964)

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.

Re:PostgreSQL a better choice for database (5, Insightful)

Vahokif (1292866) | more than 4 years ago | (#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.

excel macros for the rookies (1)

tbischel (862773) | more than 4 years ago | (#33090998)

I'd say start with something practical that builds on knowledge you may already have. For instance, many people use Excel in their day to day lives... I'd start with the vbscript macros to do simple tasks to make your data more useful.

Don't box the guy in! (5, Insightful)

mcrbids (148650) | more than 4 years ago | (#33091212)

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.

Google is your friend. (1)

Monkeedude1212 (1560403) | more than 4 years ago | (#33090710)

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 compiler, Google that!

Though I probably shouldn't be plugging Google like that, I think any search engine will do.

In my opinion (5, Insightful)

IICV (652597) | more than 4 years ago | (#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.

Re:In my opinion (1)

AnonymousClown (1788472) | more than 4 years ago | (#33091084)

I learned C++ because my dad had written his own custom version of tcpreplay, and offered me $20 to port it to Windows.

And gave you a lesson on outsourcing in the process. ;-)

Re:In my opinion (1)

Araes (1177047) | more than 4 years ago | (#33091096)

As an addendum to this, start with something relatively small, where you can see small, iterative improvements and get feedback on how you are doing.

A small webpage in something as simple as HTML is a decent way to start. From there, add on functionality, maybe something like Javascript, perhaps database queries, or similar.

Picking an interpreted language, like a script with widely available interpreters, can help this process, as you can achieve appreciable results beyond "Hello World" in a short amount of time.

From there, you can move on to more complex things, like learning the basic logic patterns, programming patterns, and/or languages which are compiled to hardware specific machine code.

Basically, don't dive off the deep end too fast, and constantly give yourself information and results so you can be motivated and see how you are doing.

They shouldn't (3, Insightful)

jawtheshark (198669) | more than 4 years ago | (#33090722)

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:They shouldn't (0)

Anonymous Coward | more than 4 years ago | (#33090822)

I agree, you really have to have to grow up into wanting to program. This usually develops from gamers wanting to mod games, but also want to explore even further than modding. Relatively, it's kind of easy to write a program that changes the files of another program.

Re:They shouldn't (2, Interesting)

MikeFM (12491) | more than 4 years ago | (#33090868)

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 Rucker that said programming is like building a house of cards with invisible cards. There is some truth to that idea.

Re:They shouldn't (2, Insightful)

mrbene (1380531) | more than 4 years ago | (#33090942)

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 doing them - doesn't matter what, specifically. I know that I'll never use these skills to help feed my family - expecting that an amateur such as me can compete with folks who have actual training is idiotic - but I do know when to call the experts, how to call their bluffs, and when I can save myself some bucks by doing it myself.

Re:They shouldn't (2, Insightful)

mysidia (191772) | more than 4 years ago | (#33091020)

"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 algorithms), common practices in the language in their industry, and the assistance of a software architect.

Re: They shouldn't (1)

Black Parrot (19622) | more than 4 years ago | (#33091124)

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.

Re:They shouldn't +1 (0)

Anonymous Coward | more than 4 years ago | (#33091176)

Agreed. There are already enough non-techies that are trying to write code. Then real programmers waste time fixing their code.
If you write it yourself, it will probably cost you more later on to have the code fixed then to get it done professionally the first time.

Funny you should ask... (1, Interesting)

Anonymous Coward | more than 4 years ago | (#33090724)

Funny you should ask...

I was just watching a video or 7 at the Khan Academy [] , and I was saying to myself "Wow, it would be so easy for me to make 10 minute lectures about one of my chosen programming language!". As a collective, we could probably simplify all sorts of compsci information!

Other than that, I know a few colleges have free courses online. Like the MIT free course material [] . I'm sure someone more informed here could provide you with some top-notch links.

Re:Funny you should ask... (0, Offtopic)

Mordok-DestroyerOfWo (1000167) | more than 4 years ago | (#33090934)


Let the nerds do that... (0)

Anonymous Coward | more than 4 years ago | (#33090740)

The real money isn't in coding, it's the ideas. Just think of an idea and hire someone to code it for you.

Division of labor? (0)

Anonymous Coward | more than 4 years ago | (#33090746)

Why not stick to whaterver you are doing? I have no need to learn how to be an amateur accountant, because I am a professional programmer. If you are a "non-techie", be the best "non-techie" you can be and leave the technical stuff to the "techies". You will save yourself frustration and the money you will have to pay a professional to fix it later.

Re:Division of labor? (2, Interesting)

David Greene (463) | more than 4 years ago | (#33090814)

This is much too limiting. Changing careers can be a wonderful thing for people. I know someone who had no technical background and went from managing developers to being a developer and it was a great change for her. She found work to be more interesting, the problems challenging and finding solutions gave her a sense of accomplishment. In other words, a career change was much more fulfilling than simply sticking with what she knew.

And she did it around age 50.

What do you want to learn? (0)

Anonymous Coward | more than 4 years ago | (#33090756)

To make fancy webpages, or the general art of programming?

If it's the former, grab one of the 5000000 PHP+mysql books and go to town on it.

If it's the latter, then you have your work set out for you. I'd suggest The Art of Programming but mostly I use it to scare people off. In reality you'll want some kind of quick overview of different programming paradigms (procedural, functional, object-oriented) and the various ways different languages achieve those paradigms (for instance, Java's class-based OO vs JavaScript's prototype-based OO) Then once you've decided what buzzwords you wish to comply with, locate books explaining how to develop buzzword compliant software.

I like the PHP suggestion. (1, Insightful)

hkz (1266066) | more than 4 years ago | (#33090758)

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.

Re:I like the PHP suggestion. (0, Troll)

Anonymous Coward | more than 4 years ago | (#33090910)

I like the suggestion to use PHP, it's perhaps the closest we have to oldfashioned BASIC.

And just like BASIC, most programmers who start out in PHP never move past writing spaghetti-laden cuntpaste code.

Re:I like the PHP suggestion. (1)

Twinbee (767046) | more than 4 years ago | (#33091222)

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.

!Programming (2, Insightful)

StikyPad (445176) | more than 4 years ago | (#33090760)

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.

How to start programming in PHP (1, Funny)

Anonymous Coward | more than 4 years ago | (#33090762)

How to start programming in PHP:

Step 1: remove half your brain
Step 2: enjoy how clearly documented the standard library now seems

For .Net, the instructions are similar, but you take out the other half too.

Just the basics.. (1)

MikeFM (12491) | more than 4 years ago | (#33090770)

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 the benefit of a different prospective on coding. Likewise I suggest learning LISP and Prolog as they'll widen your horizon and can give you some powerful tools that many programmers don't have.

Eventually you might want to look into C, C++, Objective C, Assembler, Postscript, and shell scripting to round out your experience. Also you want to read some books on data structures, algorithms, and design patterns. Knowing how to write code doesn't make you a programmer anymore than speaking English makes you a brilliant author.

Nontechnical people (0)

Anonymous Coward | more than 4 years ago | (#33090772)

— for example marketers

Pardon me while I throw up into my mouth.

Do you have a specific goal in mind? (1)

rolfwind (528248) | more than 4 years ago | (#33090776)

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 between these two language families. There are lesser used languages that try different ideas.

But, what is the end-goal? The summary mentions a lot about web design and HTML but then says that's from and earlier thread. Programming won't teach you about web design (not much anyway). Web design only dabbles a bit in programming if it's limited to HTML/CSS. SQL is another thing (databases). And "learning technology" can range from learning to navigate your basic desktop to making spreadsheets to designing simulations in C, etc.

It's hard to get candy here without a pinata to hit.

Re:Do you have a specific goal in mind? (1)

MikeFM (12491) | more than 4 years ago | (#33090982)

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 designers don't know how to design a web page either. Explaining the many bad web sites.

Q: How should a non-techie learn programming? (1)

aaaaaaargh! (1150173) | more than 4 years ago | (#33090780)

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.)

what do they want to do? (2, Informative)

Chirs (87576) | more than 4 years ago | (#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).

Re:what do they want to do? (0)

Anonymous Coward | more than 4 years ago | (#33090970)

Rainbow magazine and Tron FTW :)

Code Reviews (0)

Anonymous Coward | more than 4 years ago | (#33090812)

Pick a project, do it to your satisfactions, and then post it for others to review & give feedback.

Learning from constructive criticism is a big part of learning programming.

Please don't start with databases (0)

Anonymous Coward | more than 4 years ago | (#33090824)

Database programming is the most boring shit ever. If you take a newbie and introduce him or her right away to database programming, he/she will probably decide that it's not worth the trouble to learn.

Start with something simple and straightforward -- learning basic imperative-paradigm programming with a language like Python (but s/Python/$language/). Creating programs that do cool things all by yourself is MUCH more fun and empowering than using someone else's database software to look up records from someone else's database. Once the non-techie has learned that, you can move on to discussing databases or HTML/CSS or whatever. But for goodness' sake, don't start with them.

Don't. (0)

Anonymous Coward | more than 4 years ago | (#33090828)

Should a non-physician learn medicine and practice it? Should a non-lawyer represent themselves in court? Both happen with disastrous results.

If you need an application for your business, hire one of the thousands of good freelance software engineers out there and get a solid, well-build application. Save yourself the time and trouble of learning "programming" and stick to whatever it is you are good at doing. Leave the development to people who make it *their* business to understand the intricacies of software security, language nuances, database design, software testing, design patters, accessibility, user interface guidelines, etc...


Re:Don't. (1)

trentfoley (226635) | more than 4 years ago | (#33090954)

I absolutely agree.

If a person is not technically inclined, programming is the last thing they should practice. Much like a dyslexic should not get a job as a proof reader, or a mathematically challenged individual should stay away from physics.

Also, as another post stated, the technologies listed (web design, database, scripting) are not true programming.

Basic scripting? (1)

betterunixthanunix (980855) | more than 4 years ago | (#33090842)

Why not look at a language like, say, AWK? Really basic, great for creating useful filter programs, and fairly widespread.

Plethora of Options (5, Informative)

cosm (1072588) | more than 4 years ago | (#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.

introductory course at community college? (1)

peter303 (12292) | more than 4 years ago | (#33090862)

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.

Training my apprentice... (0)

Anonymous Coward | more than 4 years ago | (#33090880)

With my apprentice, I told him with no preparation to create something in Quartz Composer (a graphical programming interface for OSX) that is hard, but within its capabilities. I then would answer any 'how do I' questions in algorithmic terms, as opposed to making a solution for them. If he gets frustrated, I explain with diagrams and further detail, and might create an example - though I will not let him take away reference implementations himself. This has the benefit of him learning how to solve problems, get aid, and convert algorithms and specifications to an implementation to get a result.

After those foundations in place, it's simple enough to replace graphical blocks with known blocks of code to duplicate their functionality, until the blocks and instructions get smaller, and smaller, and smaller - until you're at PHP, C, or Assembly level... depends how far you want to go.

learn the standard way (1, Interesting)

NynexNinja (379583) | more than 4 years ago | (#33090882)

Re:learn the standard way (5, Funny)

interval1066 (668936) | more than 4 years ago | (#33091080)

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

  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

But why? (5, Insightful)

Anonymous Coward | more than 4 years ago | (#33090888)

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

mod up! (2, Interesting)

Black Parrot (19622) | more than 4 years ago | (#33091150)

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

Best response posted so far.

How should beginners learn code? VIEW SOURCE (1)

HockeyGuy (1864828) | more than 4 years ago | (#33090890)

I had to teach people how to make websites for about 5 years and the one thing I always suggested was to view the source on a webpage.
just find a word on the webpage near the thing you want to examine and view source then search for that word... but today you can install a plugin in FireFox like firebug and see more details.

As for php its the same deal .. find a code sample site and take a look..

That will get you interested especially if you like puzzles but then you need to take a weekend and browse a how to code php in 24hrs book just so you can understand things a little better...

After that when you see a function just google it and you are likely to get an explanation....

And if you want to see how the pros do it find an open source project that has a few years under it's belt and really take a look at how code is structured.

self-promotion (0)

Anonymous Coward | more than 4 years ago | (#33090892)

I wrote a blog post about this! (for a previous employer)

Here, catch:

Not going to work (0)

Anonymous Coward | more than 4 years ago | (#33090904)

Simply put, while programming is not horribly difficult, doing it well enough for larger works still is a specialist task, and well, the actual works are more often than not taking hours and hours of full-time work plus overtime to get done.

Ergo, I think it mentally at least takes you to consider yourself a "hobbyist" and to have an actual, quite pressing purpose why you're doing it. It does take some dogged persistence to get anywhere, sort of like when you learn a foreign language - at least for the first programming language.

That being said, a six year old kid can learn a real lot about software development if its interested. You can, too, if you care enough. But, I would not even try to specifically pick one of the "easy" languages. Pick the a popular one, you will have plenty of reading material and plenty of people to ask for help if you do that...

Re:Not going to work (0)

Anonymous Coward | more than 4 years ago | (#33090992)

That was meant to be "easy is not going to work"..

Undeniable proof that Obammy is a liar (-1, Offtopic)

Anonymous Coward | more than 4 years ago | (#33090918)

“I can make a firm pledge. Under my plan, no family making less than $250,000 a year will see any form of tax increase. Not your income tax, not your payroll tax, not your capital gains taxes, not any of your taxes.”

        --Candidate Barack Obama, Sept. 12, 2008

“If your family earns less than $250,000 a year, you will not see your taxes increased a single dime. I repeat: not one single dime.”

        --President Barack Obama, Feb. 24, 2009

“The statement didn’t come with caveats.”

        --Obama spokesman Robert Gibbs, April 15, 2009, when asked if the pledge applies to healthcare

"Due to recent Federal health care legislation, reimbursement rules for OTC (over-the counter medications) are changing effective January 1, 2011. Any OTC medication expense (except OTC insulin) incurred after December 31, 2010, must be accompanied by a prescription. This change will not qualify as a mid-year change in status."

        --Excerpt from my employer flexible spending HSA brochure for FY2010-2011. Since after Dec. 31, 2010 over-the-counter medicines will no longer be eligible for reimbursement from my tax-free flexible spending account, this qualifies as a new tax on over-the-counter medications. This new tax is fondly referred to as the "Medicine Cabinet Tax."

Assembly (0)

Anonymous Coward | more than 4 years ago | (#33090920)

Assembly, no question about it.

Just run program called "debug" in windows, and off you go.

Number crunching you say? Learn excel then vba (1)

Sark666 (756464) | more than 4 years ago | (#33090930)

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 environment that will write functional code for you! Then once they have that foundation they can learn how to communicate with other apps like access. From there, learn sql and expand your vba in that area.

Then they can learn or full blown sql with other languages to write a web frontend.

Yes it's microsoft and they're evil, but its a development environment that most businesses aren't even aware that they have.

I continually wow workers with what I do in excel. The amount of time people waste doing reports and inputting data that could be automated or setup in a database.

And yes, access sucks in many ways, but this is still a great path to learn and it will definitely provide a benefit in many businesses.

Simple, learn Javascript (1)

SexyKellyOsbourne (606860) | more than 4 years ago | (#33090932)

Simple, use javascript.

It requires very little in terms of setup -- all you have to do is get a good text editor, like Notepad2, and write a .html file. Feedback to how your code works is as instant as hitting the F5 key in a browser.

There's a lot to with getting started with programming that has to do with barriers to entry. Having to set up a development environment, deal with compiler errors and such, and not getting instant and familiar feedback is quite a barrier.

If you know HTML and CSS, you should have a lot of fun with it. Grab jQuery, too -- it's easy to do amazing things very simply with it, and you'll learn a lot about OOP along the way just using it.

You'll be able to use it very nicely in the future. Once you want to do something else, however soon that is, move onto that with what you've learned.

Learn Unix (5, Insightful)

znice (1565751) | more than 4 years ago | (#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. (2, Interesting)

dcollins (135727) | more than 4 years ago | (#33090950)

"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.... (1)

Ancient_Hacker (751168) | more than 4 years ago | (#33090984)

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.

I may sound cynical.... (2, Insightful)

brasselv (1471265) | more than 4 years ago | (#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?"

Don't do it (1)

strangeattraction (1058568) | more than 4 years ago | (#33091022)

But if you must try, start with something simple and solve a particular problem. Don't listen to people who espouse one language versus another. They are idiots and will never be helpful. You might try [] It is a well defined environment with a simple editor and tools and will let you do some really fun and interesting things. A lot of artist use it for various projects.

How do you start? Don't. (0)

Anonymous Coward | more than 4 years ago | (#33091030)

If you don't pretend that you know how to code, then I won't pretend that I know how to run a business. Deal?

HTML, Notepad (2, Insightful)

Bluesman (104513) | more than 4 years ago | (#33091032)

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.

Re:HTML, Notepad (1)

Bluesman (104513) | more than 4 years ago | (#33091064)

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.

Don't (1, Interesting)

Anonymous Coward | more than 4 years ago | (#33091040)

I advise non-techies to not learn programming. Unlike most slashdotters, I don't see programming as a useful tool that everyone should learn, I think of it more as being a doctor than a mechanic. Sure, it'd be nice if everyone could program well, but the bottom line is most people don't have the knack for programming that techies do. As such, if they learn to program, they'll do it poorly (likely) as they lack the passion techies have.

How many times have you guys had to clean up code after a beginner, idiot, or non-techie? Be honest.

Food for thought,

(first time poster, long time reader)

name your pleasure (2)

epine (68316) | more than 4 years ago | (#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.

The language does not matter that much. (1)

Thanatiel (445743) | more than 4 years ago | (#33091068)

A language is easy to learn: you only need to know how to loop, how to branch, how to define/make/call a function, an object and its methods and you are basically set.
What's less easy is the API: what are the tools, objects, functions, collections, IOs, whatever readily available to you with that language and does it cover what you are interested in. The difficulty here is that it's usually big, so at first it takes a while to find where is what you need.

Anyway that's not the issue here. First you have to think right. For this you should learn algorithmic (ie: [] ).
Then only you can pick a language. Take one with garbage collection: Visual Basic, Java, C# and avoid scripting languages.
When you will feel comfortable with one language the other ones should only require a minor effort. (0)

Anonymous Coward | more than 4 years ago | (#33091090)

A great place to start learning HTML, CSS, SQL, PHP, etc is It is where I point my coworkers when they need to dip their toes into new languages.

Yeah... No. (0)

DaveV1.0 (203135) | more than 4 years ago | (#33091098)

First, one should learn to use one's business applications. (MS Office)
Then, one should learn the macro/automation language of said business applications. (VBA)
Then, if one has time and inclination, a scripting language, or two, for the OS. (Powershell)
After that, it is a toss up. Java, Javascript, C#, C/C++. But, I doubt a non-techie will ever get this far.

First and foremost, non-techies want to use technology to improve their and their business' efficiency. They need to stop investing time and effort into tech and programming as soon as it starts to take time away from their core business.

just set an appropriate expectation for yourself (1)

PJ6 (1151747) | more than 4 years ago | (#33091110)

Unless you decide to do it full time, anything that you develop that actually sees production will eventually need to be rewritten by someone else. If you're OK with that, go for it.

If you're serious about learning how to program, start with a strongly-typed language. Microsoft's Visual Studio has a wonderful (and possibly the best) integrated development environment. I recommend VB.Net, which you can get for free [] .

It's easy (1)

Dunbal (464142) | more than 4 years ago | (#33091120)

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 programs that meet your goals.

This is how we did it back in the old days, when all you had was a couple pages on assembly language distributed in your MS DOS manual. Modern IDE's let you see much more clearly what's going on than a code dump in debug.exe.

gotta have the bug (0)

Anonymous Coward | more than 4 years ago | (#33091184)

Web programming with HTML/CSS and PHP/MySQL is probably the easiest route, but here's the thing: if you're not "one of us", it won't stick. Programmers usually learn through obsession. If I didn't love learning about computers and how they work, I wouldn't be able to do it. I've seen a lot of people say "I'm going to learn to Program", but in the end they just didn't have that bug that makes us spend hours and hours learning it - and enjoying it.

Seems simple to me... (1)

frank_adrian314159 (469671) | more than 4 years ago | (#33091200)

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.

No! (0)

Anonymous Coward | more than 4 years ago | (#33091204)

Don't ever teach marketing people programming. Feeling fulfilled after completing their first "hello world" exercise, they'll think "That was easy" and underestimate the hours needed to complete yet another project

why should a non-techie learn to program??? DONT.. (0)

Anonymous Coward | more than 4 years ago | (#33091208)

Yeah...well I'm a programmer and it sure would be handy if I knew how to do brain would really help to "feed my family".

Short of going to college, I would say you are in trouble. Just pay someone to make your website, and spend your time making yourself a better buisnessman.

One tip, (1)

maiki (857449) | more than 4 years ago | (#33091230)

For starters, refrain from calling us "techies" if you want less rolling of the eyes. Similarly, don't say "I'm computer illiterate!" and then laugh as though it were a clever joke. That being said, you're forgiven because of "studs and studdettes". That made me smile :) Though I would've also liked "studs and mares".
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?