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?"
Give someone a program, frustrate them for a day. Teach someone to program, frustrate them for a lifetime.
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.
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)
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".'
You've obviously never done an install of NetWare 4. As those with experience will tell you, sacrificing a black cockerel on the night of a full moon was the only way to get it up and running.
No left turn unstoned.
I've seen plenty of car analogies on slashdot. This is the first watercraft analogy I've ever seen. I applaud your willingness to experiment with new forms of analogy.
That being said - I have to say that if you want readers to have any idea what you're trying to say, you would be better off sticking to cars.
Not learning Drupal?
... when Tina the Tech Writer wants to get better pay and tells Alice, "Alice, teach me how to be an engineer. I don't care if it takes all day." And then adds greedily (as Alice is gritting her teeth), "but let's keep quiet about this. I don't want others to get in on this scam."
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?
You know, there is a difference between trolling and pointing out the flaws in your reasoning. Just saying.