I think you hit the nail on the head. With all of the resources that are currently available on the internet, it is easier than ever for a non-technical person to learn enough about programming for them to piece together a programatic solution to a wide variety of problems.
In an age where many people spend 40+ hours per week in front of a computer screen, even a small marginal increase in a computer user's productivity could save them hundreds of hours a year. As a result, it seems like a completely reasonable investment of a non-technical person's time and energy to learn enough about programming to enable them to scrap together a program that allows them to accomplish simple tasks more efficiently.
Would a professional programmer be able to write better code more quickly? Of course. But would a person with zero programming knowledge even recognize when a particular task they are spending hundreds of hours each year manually performing could easily be automated? Probably not.
This should be a mandatory read for every business guy who wants to run his or her own start-up. I wish I could have read this post three years ago. I still look back in horror on how I interacted with coders or with my technical co-founder before I started to learn to code myself.
I guess the bottom line to the whole discussion started by Jeff is:
Not everyone should become a coder, not everyone can become a (good) coder, and not everyone wants to become a coder. But if you really feel like learning to code is the only way not to get left behind in this rapidly changing world (vs just doing it becomes everybody thinks it's cool nowadays), go for it!
Agreed. Marketing dude here (who uses mixrank btw) that learned to hack a little bit. Good for my life, and good for talking to programmers about programming. I'm not a programmer, but I think my life is better for having hacked some things together. It has certainly helped me appreciate the challenges of developing great software.
This is probably the best of the recent 'don't/do code' blog posts. You don't need to be a guru but over time you can learn enough to get by and understand code.
If you are building a serious business, eventually you will need to hand over the real development work, to real developers. This allows you time to do what you're good at.
That list of lessons learned? That's why everyone should learn to code, or at least try, if for no other reason than so they know what it's like on our end. And hey, it might be directly useful, too.
Every CEO and executive should experience a bit of this.. there is soo much productivity waiting to be unlocked if only c-suite could 'get' IT. Sigh ...
I didn't notice it before I saw your comment; I then tried it, and as a result, gave the "kudo" by accident too. This is a great example of beauty/fanciness != good user experience. There's no way to "unkudo" either, sigh..
I did the same thing, got momentarily distressed, then realized it means absolutely nothing in the grand scheme of things and smiled at a playful little implementation of a voting widget.
This is the show where everything is made up and the points don't matter.
Radical notion: Some people should learn to code. Some shouldn't. Not everyone should be a programmer. Some people need to program even though they are bad programmers (e.g.: a business guy stringing together off the shelf services with a little bit of glue code to make an MVP to attract an engineer cofounder.)
If you have the internal drive to be a programmer- great, be one. If the idea repulses you, then do something else.
I don't really think there is all that much peer pressure for everyone to be a programmer.
In the past, however, there was. Back In The Day, "computer literacy" meant programming because computers often came with little more than a basic interpreter out of the box. This is no longer the case.
I think all these tools that let "non-programmers" learn to code are great-- because there's a lot of "non-programmers" who could benefit from it. For instance, ops people aren't necessarily "programmers" but they can use scripts to automate tasks that would be mundane and repetitive otherwise.
If an assistant wants to learn a macro language so that they can better operate spreadsheets-- wonderful.
I worked thru one of the online programming classes with a non-programming co-founder and I think she found it pretty valuable. She's not writing code now, but her understanding of what's going on with the product is much better.
I think its silly to pretend like everyone has the same level of programming skill (which was a hard lesson for me to learn, because it always seemed so easy for me, and I figured t would be for other people.) But its also silly to poo-poo on "non-programmers" wanting to learn some programming.
These tools are great. And this drama seems, well, also silly.
I'm a programmer. I would think any article saying "Everyone should learn marketing!" is silly, but I'd also think that "nobody should learn marketing except marketers" is also silly. I spend a lot of time thinking about marketing and learning everything I can-- because its something we need.
I think we should incorporate programming into mathematic classes starting with the earliest grade possible.
The way people are taught mathematics is mostly useless. It's a bunch of equation and calculation that people are doing by hand. Nobody is trying to identify problems, break them down, make hypothesis, and so on. With programming, we could take the usefulness of mathematics to a whole new level by breaking the bottleneck of calculation.
In the end, we may be able to produce even more mathematicians, engineers, and scientists at an earlier age, because they learn the skillset needed to be in those profession.
The way people are taught mathematics is mostly useless. It's a bunch of equation and calculation that people are doing by hand. Nobody is trying to identify problems, break them down, make hypothesis, and so on.
I recall some episodes of five minutes wasted by research mathematicians because they were unable to quickly multiply some 2x2 matrices in their heads.
Being able to perform the low-level skills like arithmetic very rapidly in your head helps tremendously when it comes to narrowing down hypotheses. You can often reject a hypothesis quickly if you are fast enough at doing some computations in your head.
So yes, more teaching of how to identify problems and break them down is a good idea. But you also need to be rock-solid in those elementary but fundamental skills, and you don't get there without a lot of practice.
I don't think that it should necessarily be the case. Part of the reason why mathematics & sciences are taught by hand is to demonstrate the process and confront the complexity at hand. "Nobody is trying to identify problems, break them down, make hypothesis, and so on." This is not necessarily true. Sure, after you are first shown the problem you then trudge through multiple calculations and variations of the problem, but the purpose of this isn't to grind it out and memorize it, but to reinforce the process and underlying parts to solving the problem.
There's kind of a reason why at some point we teach certain elements of programming by hand too.
Maybe I'm reducing your question but I think it's important to note the intrinsic value of teaching by hand vs. always incorporating automation by programming.
Part of the reason why mathematics & sciences are taught by hand is to demonstrate the process and confront the complexity at hand.
So what? Programmers deal with lot of complexity all the time.
This is not necessarily true. Sure, after you are first shown the problem you then trudge through multiple calculations and variations of the problem, but the purpose of this isn't to grind it out and memorize it, but to reinforce the process and underlying parts to solving the problem.
All you have to do is recognize the problem and apply the calculation to derive an answer. The calculation will also be particularly tedious. Does that sounds like "reinforcing the process" to you? It's all busywork that can be done by machines.
There's kind of a reason why at some point we teach certain elements of programming by hand too.
I was never taught that way, or rather, I taught myself. I learn a few basic concepts and apply it to projects. I also learn how to use tools like debuggers that help make me figure out things a lot easier.
Maybe I'm reducing your question but I think it's important to note the intrinsic value of teaching by hand vs. always incorporating automation by programming.
There's a big difference between teaching some mathematical concept by hand and forcing students to calculate by hand everytime they confront a problem. They should be able to program a solution to the problem and then move on to the next problem.
Important point here: You are not representative. If you are on Hacker News, you have probably been called brilliant at least once. You are almost certainly, given that you don't seem to be a non technical co-founder in a startup, in the top 5% of the population for mathematical/logical(not necessarily arithmetic) abilities. Just because you find the calculations tedious does not mean that most people don't benefit from them. From what I recall, most people forget a concept that they are exposed to once and only once.
Important point here: You are not representative. If you are on Hacker News, you have probably been called brilliant at least once. You are almost certainly, given that you don't seem to be a non technical co-founder in a startup, in the top 5% of the population for mathematical/logical(not necessarily arithmetic) abilities.
That's because I learn to program. If people learn to program, they'll be more "mathematical/logical" too. I am "brilliant" through hard work and curiosity, not because I have high IQ.
Just because you find the calculations tedious does not mean that most people don't benefit from them.
I meant we humans suck at calculation. We are not like computers that can follow steps perfectly. Even when we know the steps, we often get the answer wrong due to our mistakes in following the steps.
From what I recall, most people forget a concept that they are exposed to once and only once.
What make you think it doesn't apply to me or to the rest of people on hacker news?
I dont think you can change the notion of programming enough to make people who dont like the idea of programming like it. Programming is giving instructions to a machine in a language you can both understand which just seems scary more than anything else to some people. Sure you can make it simpler or cleaner, reduce the steps to get started but in essence your interacting with the computer in a way to goes far beyond normal user interaction and some people are not confortable enough with this to even get started let alone "change the world".
In an age where many people spend 40+ hours per week in front of a computer screen, even a small marginal increase in a computer user's productivity could save them hundreds of hours a year. As a result, it seems like a completely reasonable investment of a non-technical person's time and energy to learn enough about programming to enable them to scrap together a program that allows them to accomplish simple tasks more efficiently.
Would a professional programmer be able to write better code more quickly? Of course. But would a person with zero programming knowledge even recognize when a particular task they are spending hundreds of hours each year manually performing could easily be automated? Probably not.