

Why Everyone Should Learn to Program - grovulent
http://reviewsindepth.com/2011/04/why-everyone-should-learn-to-program/

======
aspir
In line with this article, I've been learning how to program as rapidly as
possible. I'm a sales lead for a startup with a heavy Ruby use, as well as a
little C, C++, and JS.

I can tell you it isn't easy, but its worth it. I'm better at my job because I
now can study the product line by line, and I am also able to script mundane
tasks like lead gathering via web scraping.

But -- once again, it's not easy or quick to do it right -- get ready for a
marathon and befriend as many people at local user groups as possible. Even
people working in langages you don't plan on learning and in industries you'll
never go in to (you never really know what languages or industries you'll be
working in 10 years later anyway). I wouldn't be able to do it without the
input of my local ruby group, my coworkers, and some friends I met at our
office space at a mid-sized coworking facility.

To answer a potential next question: the resources I've been using/have in my
queue are as follows (keep in mind I've been trying to learn full stack web
dev rather than just one language):

For Ruby/Rails:

-Agile web dev with rails (practically required these days)

-Code School's Rails for Zombies (Amazing, free, and the right amount of tough for a newbie -- I plan on buying their Jquery lineup soon)

-Michael Hartl's Rails Tutorial Screencasts (I'm definitely a video guy, and you get a discount for completing R4Z)

-Crafting Rails Applications (Takes your perception of rails to another level)

-Programming Ruby 1.9 (You'll have to learn Ruby eventually, might as well learn from one of the best)

-Ruby Best Practices (Its free, darn good, and Greg Brown's a pretty cool dude from what I can gather)

-The Ruby5 podcast (It's 5 minutes, and gives you a great survey of all of the cool widget gems and the large development undertakings within the community)

-Ruby Rogues Podcast (I know one of the brains behind this podcast, so I listen. It's 75% over my head, but the 25% I do get is amazing.)

-Everyday scripting with Ruby (This book is for the audience that the author of this article describes. If you have an annoying, repeated task you're doing, make the computer do the heavy lifting.)

Non-Rails/Ruby:

-Carsonified's ThinkVitamin Membership (Absolutely the best tutorial vids I've ever seen. Short, clear, info heavy, and very quickly retained. I feel like I'm in The Matrix when I'm watching their stuff. There's actually some good stuff for Sinatra, Django, and WordPress here too)

-PG's On Lisp (I have no intention of building Lisp applications, but the book is amazingly written, and interlaced with PG's manifesto for quick, high quality development. Lisp is his weapon of choice but many of the principles here are rock solid regardless of the medium the artist chooses. Plus it's free.)

-5by5 Podcasts, particularly "Lets Make Mistakes" (They're design podcasts, and the professional design industry is particularly adept and finding client and consumer "pains" and fixing them. Plus, you will eventually have to make your products not look like crap)

I apologize for the long post, but if I were reading this thread 6-8 months
ago, I would've killed for a list like this. To the "biz guys" looking to
learn: you can't go wrong, in my opinion, with the above list at all. If
you're low on cash, some of these resources are free, but every dollar I've
paid has been money very well spent.

------
gaius
Sure, and everyone should learn to cook too. You don't have to want to be a
professional chef in order to use the skill. That's all he's saying.

~~~
Derbasti
This is the Hacker Mindset: If you realize something is lacking, invest some
time to learn the basics about it. More often than not, the basics will be
enough to improve you workflow dramatically.

And besides, it will grant you the insight necessary to make informed
decisions about how to specialize.

Pity those who never investigate and always bow before 'I can't do it',
without even having tried. Without a desire to know, nothing can be achieved.

------
FrojoS
From the article:

"* 1) I could email all the staff and ask them to email me the data every
month and compile it manually.

2) Find some software that would allow me to do this relatively easily.

3)Program a solution myself that is perfectly tailored to the process. _"

He choose 3) but what about

_4) Get a even better result by bringing in a professional. For instance a
contracter.*

?

Still, great that he learned programming. I personally find it perfectly OK,
that almost " _[...] EVERY interface you employ on a day to day basis is
likely created by someone else._ "

As long as I believe that I,

a) understand the key processes that are involved creating it. b) have the
tools and knowledge available to recreate or adapt it if I need to.

Of course, this does NOT mean, that I would likely design my own CPU [1]. But
I would e.g. feel comfortable building my own, individualized, laptop [2], if
I really had to.

Being able to do things by yourself makes you independent. But having almost
everything done by someone else is progress.

[1] It would be nice to have state of the art open micro chips. But, imho, as
long as the manufacturing process is as large scale and costly as it is, a
free CPU design would be quite useless. [2] Similar to how a company like Acer
does. I 'just' select all the hardware components I need, a free OS and design
my own case.

~~~
grovulent
Well I can give you some insight into the difficulty of 4 - in my particular
circumstance...

Assuming I can convince my boss that the task requires a professional... she
then has to take it to the admin leaders committee and pitch it to the head of
school. The head of school might make an executive decision on it, but more
likely he will take it to the PR committee to discuss if hard to come by funds
are worth spending on it. Questions will be asked as to why this can't be
delegated to the university tech folk. Arguments have to be made. Our finance
guy then has to find the funds. More discussions...

As to your other point. I agree entirely that deference to existing solutions
is always preferable - IF those solutions meet your desires. But I would
stress the following two points:

1) I see people engaged in manual administrative tasks on daily basis that
they could work to automate to a large degree. There are no existing solutions
to them. These processes are often idiosyncratic - and there is no wider
market for an automated solution. However, such a solution would do wonders
for those having to carry out those processes.

2) I said that existing solutions that meet your desires are always
preferable... but what if your desires are constrained by the interfaces with
which you have been bequeathed? We have this Cartesian understanding of self
wherein everything about US is thought to spring forth from an irreducible,
internal essence. But desires are contextually determined to a very large
degree. My larger point is that an ability to create your own interfaces might
just liberate your desires in ways that are difficult to imagine for people
who don't have such skills.

The latter point is at least an interesting empirical hypothesis that deserves
some thought...

~~~
FrojoS
Thanks for your reply! This sounds like one of those perfect examples, why
beeing your own boss can be several magnitudes more effective [1].

I totaly agree to 1) and 2) plus I do agree, that it would be great if
everyone who has a computer would be able to really make use of it. And that,
sure does require programing skills.

[1] I'm suffering with you here. Writing this post on a lab computer where I'm
not permitted to install software. Hence, I can't install GIT and now use
Dropbox web interface to transfer the code that I develop on my Mac Book. No
wonder procastination is more fun ;-)

------
jimbokun
Software Carpentry.

<http://software-carpentry.org/>

Kind of the equivalent to knowing how to do minor home repairs, without
calling in the professionals. There are many people who could benefit from the
equivalent level of programming skill.

------
Tichy
Yes and no - challenge: how would the people manning the checkout counter at
my local supermarket benefit from being able to program?

Not that supermarkets couldn't be improved by programming, but the people
manning the checkouts are hardly in the position to do so?

Granted, there might be other aspects of their lives that they might be able
to enhance.

~~~
FrojoS
And how likely is it, that this job will still exist in a few years?

Granted, there will always be service jobs, where physical presence and a
polite smile is all that is required. But I don't see that checkout counters
belong to those.

~~~
thebooktocome
The big box store retailers have been trying for years to get computerized
checkout systems to work. They're clunky, slow, and while they require perhaps
a quarter the amount of staff to run, the ones in my local big box store seem
to break down frequently.

~~~
Jach
Sounds like a potential startup. :) If you could build a better one (which
shouldn't be that hard if they're so bad, right?) you could dominate!

I like it when they have both, since sometimes I want a checker and bagger,
especially if I have a bunch of stuff. Other times I just want to get in and
out and the machine is consistently faster than checker + line.

Of course, the real issue is that lines are good for businesses. They keep the
customer in the store longer, with more opportunity to spontaneously buy all
that shiny stuff near or at the checkout stands... WalMart has like 10 self-
checkout machines but every time I've been there they've had most or all of
them turned off. I don't think it's because all of them had errors.

~~~
thebooktocome
There's serious barriers to entry, probably a legal maze to navigate, and then
convincing the big box stores that their current system sucks. Worse is
better, right?

~~~
wisty
No legal issues, though you would want some insurance. Even if there are, if
you get something that works then the big boys like Wallmart will fix things
up for you.

------
thanos2014
a very good book ontopic is Program or Be Programmed: Ten Commands for a
Digital Age by Douglas Rushkoff. [http://www.amazon.com/Program-Be-Programmed-
Commands-Digital...](http://www.amazon.com/Program-Be-Programmed-Commands-
Digital/dp/1935928155)

