Hacker News new | past | comments | ask | show | jobs | submit login
Why Everyone Should Learn to Program (reviewsindepth.com)
40 points by grovulent on June 11, 2011 | hide | past | web | favorite | 19 comments

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.

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.

well, looking at the cost of going out to eat every night, vs. buying the ingredients at your local grocery store, it makes sense to learn to cook - cheaper food, you know what's in it, etc.

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.

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

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

Another issue is that discussing project requirements is usually done very badly.

If you don't know any programming, you won't know when to ask for a professional.

You know that an automated weekly task is easy. You know that scraping names out of an API is easy. So you can do it yourself, or pay a pro a few hundred to do it.

If the task to be automated was different, i.e. "put all the confidential emails into a special folder, and forward everything else to a public archive" then it would a little more expensive. You only know that because you know that computers can't differentiate "private" emails, wich you know because you know how to program.

Software Carpentry.


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.

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


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

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.

There is significant delineation between "learning to program" and "becoming a programmer." In the author's context, it was a simple make vs. buy decision. A simple script was better than the alternatives available, and was a more suitable solution to hack it together. Would his hack be production-ready/salable? No.

But, how many projects have you worked on where the if the client had built a basic prototype, it would improve your ability as a contractor to build it right? The client would have more appreciation/context for the level and scope of work needed for the project. How much more work would there be if every grocery-store clerk had such basic knowledge and appreciation? Is he going to make the job market more competitive in programming? No.

The result of an influx of beginner programmers (or a society-wide basic threshold of programming knowledge), IMO, would be more and better end products, reduced frustration on all sides, and more innovation. I hired teams/contractors for projects in the past, and was unhappy with the result. And I attribute it not to the level of competence of the contractor, but my own. I've taken up the mantle and begun learning to program over the last year (Python/RoR/PHP/JavaScript/HTML5/CSS), and am working on building my own prototypes. But I know I can't much get beyond that, and will need-and be better able-to identify, recruit, and collaborate with professionals to take those prototypes to the next level.

Many professional programmers are autodidacts, not university-trained computer scientists. You have to start somewhere. It is easy to find a free/cheap programming book and "get started." But that is a far cry from building a testable, scalable solution.

In today's society, where technology is ubiquitous, the author's call for programming to be a basic educational goal is appropriate. His eloquent framework about reimagining the "interfaces of our lives" carries weight. If the average person gave more thought to these issues, and had a basic understanding of the technology needed to pursue such innovation, the impact would be significant. 

The world needs more autodidacts, and people who think critically about their environment. More education all around is a good thing for not just technology but society in general. Would these newfound beginner hackers detract or add value? I believe the latter.

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.

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.

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.

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?

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.

Not to mention the fact that most times, it's easier to go through the line with a check-out person running the register. Not only do they do the work, but the self check-out lines at grocery stores often aren't set up for buying a lot of items.

If you have more than five things, it's typically easier just to let the check-out person do it for you.

So what? Just because I it will most likely happen doesn't mean anyone knows, when it will happen.

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

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact