I'm actually kind of tired of hearing, "there's no other field that lets you create something from nothing" vis a vis programming. Look: I LOVE coding. I LOVE programming. I think it's fun and challenging, etc. etc. But it's not the only creative outlet that has ever existed.
Have you considered a pencil and a paper? Crayons? Markers? Paints and a canvas? A hammer, some wood and some nails?
"Ah, but that requires something to create something!" Yeah? So does programming. It requires a computer (or access to one). It requires programs to run your code - free or otherwise. In fact, I'd argue the barrier for entry into programming is SIGNIFICANTLY HIGHER than MANY other creative outlets.
I agree, and I'd argue that you can program something in 5 minutes, but you can't program something well if you haven't put in years of practice and dedication.
It's just like anything else in the world. Any jerk can grab some paints and make some lines on a canvas, but the ones who take the time to understand art and practice for years are always going to be better. Always.
So should you learn to code? If you're interested in it and you really like doing it, then yes. Otherwise you're going to waste your time and everyone else's time. Coding is just another art form. It's a means of expressing systems that run on computers. If this doesn't excite you, don't do it!
Learn something you're passionate about....because you'll never get really good at something unless you're fired up about it, and what's the point of doing something if you aren't going to completely commit? There's so much in this world to learn and be passionate about, why spend your time learning something you don't care about?
Good writing can change just as many lives, just as profoundly as good coding (think of that one book or that one blog article that really made us reflect upon our own lives).
We all have great things to say: "Please Learn How to Write"
I doubt anyone is actually claiming that programming is the only field in which you can create; that's a pretty thin strawman argument. But programming IS the highest leverage means of creation invented, however.
I say this as a programmer, photographer, woodworker, electronics hacker, and musician. Nothing else comes close to programming in how much you can create with so little.
In fact, programming can help you with ALL of the other hobbies I occasionally indulge in. Being able to write music doesn't make me a better photographer.
And you really are creating from nothing; you could create an app at your local library if you had some kind of programming skill but no access to a computer of your own. If I lost everything but still had access to libraries, I would still be able to do programming work.
Only in digital photography are you "creating from nothing"; every other hobby I have requires you to use up consumables, and every one of those hobbies have involved investments in equipment greater than what I spent on my latest laptop.
I couldn't create anything interesting with pencil and paper myself, and I would also suggest that it would take FAR more skill in drawing to begin to make a living using pencil and paper than it would skill in, say, web development, to make a living creating web pages.
I KNOW web developers who are barely "programmers" compared to what I know about programming who do a good job and make a good living working on web sites for people. That kind of range of skill can only exist because of the extreme leverage you get from knowing anything at all about programming.
> It requires a computer (or access to one). It requires programs to run your code - free or otherwise.
I know what you're saying, but I'd like to point out that you don't need a computer to write programs. I started writing programs with pen and paper back in middle school (before my family owned a computer), and still often do that. Nowadays, most of them do end up being digitized and executed, though.
Alonzo Church, Alan Turing, Haskell Curry, Moses Schoenfinkel, etc., were writing programs before computers were even invented ;)
"The notes [...] include in complete detail, a method for calculating a sequence of Bernoulli numbers [...] which would have run correctly had the Analytical Engine been built. Based on this work, Lovelace is now widely credited with being the first computer programmer and her method is recognised as the world's first computer programme."[1]
I agree that there's something satisfying about watching a computer execute a program, but I find pleasure in the process of just writing programs, too. At that point, though, it's just coding for coding's sake.
You're thinking about maths, logic and algorithmic, abstract disciplines that go nicely with programming, coding, or however you would like to call the physical implementation of the mathematical ideas derived using your pencil. Although you could argue about when exactly the step is made from abstraction to implementation, I like to think that it's somewhere between compile time and throughout testing.
They were programs in every sense of the word. Back then it was often QuickBasic or x86 assembly language, nowadays they tend to be either Lua or some Lisp (usually Scheme). I actually find the process helpful, because when it's not as convenient to just run the program to see if it works, I find that I reason about the programs more deeply. YMMV, of course.
Yes, but code is the one of the rare things that can multiply your efforts...in the same way that a it'd be useful to be able to construct wheels and levers before the industrial age.
But code goes further than that; since so much of our world is now digital, it multiplies these efforts in virtually every field, including the arts (there's a niche to be filled in custom automating the batch processing done in the photo production industry)
This is true, but the same can be said of being a great writer. George Orwell set out to have an impact on the world and he is still doing so long after his death because of the strength of his writing.
The same can be said of being a great orator. Cicero is still known today largely for his oratory skills, and similar skills have served president Obama.
So does being a great biologist and research doctor. Edward Jenner saved countless lives through is work.
Code can multiply your effort, and that is why I code, but it is not the only thing that can, and in fact many technologies exist to multiply the effort in some form or fashion.
It is not the only thing that can, but then again not all things have the same multiplication coefficient.
Clearly being a great writer, orator, or doctor have high coefficients. Being a great plumber probably has a lower coefficient. Being a great doorman might be still lower on the scale. (I'm not saying there's anything wrong with being a doorman, just taking it as an example of a skill with a low change-the-world coefficient)
I think all things being equal, it's better to learn things with a high coefficient. Of course personal enjoyment is important too, so when I say "everyone should learn to code" I'm of course not advocating forcing people to learn to code against their will…
Could you make an impact (even if a very small one) on a large number of people over the course of a weekend with a pencil and paper?
I've never had a piece of art or drawing save work/time/money for me but we have apps that do this everywhere.
Art is an amazing creative outlet and I've seen some awe inspiring drawings/paintings but I've never seen one with a tangible benefit.
I think if you asked several highschool or even college students who painted Starry Night or Washington Crossing the Delaware you'd get a lot of blank stares. Ask the same kids if they know of or use Facebook; I'd bet more kids know about Facebook.
I'm not saying that everyone is cut out to be a programmer but I do support everyone trying it out. Zuckerberg didn't create Facebook with a pencil and paper.
Yes, you can have an impact - a very large impact on a very large number of people with just a pencil and paper. Martin Luther did it.
Of course, that's taking things to an extreme, but you get my point. And sure, it took him longer than a weekend, but I doubt most 'disruptive' works of programming were born in a single weekend.
(EDIT: I'm not sure why Luther's 95 Theses popped into my head above any other body of work. But it's pretty indisputable that it was awfully impactful, and were, largely, just pen and paper (or quill and parchment... whatever :)))
Could you make an impact (even if a very small one) on a large number of people over the course of a weekend with a pencil and paper?
Gandhi made a huge impact on a vast number of people and all he had was a white cloth and a pair of glasses! (albeit it took longer than a weekend)
Joking aside, if everyone learnt to programme then there would be no need for specific programmers. Yes, it's frustrating when people don't know the basics, but I have no idea what to do when it comes to plumbing. These are very distinct jobs. I take my car to a mechanic for the same reason. I do not need to know how the plumbing in my house works to take a shower, or how an engine works in order to drive my car. Facebook or Amazon do not require their users to understand how programming works.
If your code requires someone to understand the basics of programming then you have failed as programmer to understand your target audience. Granted you have apps that save you work/time/money, but your basic user should not need to understand what is going on under the hood.
My viewpoint is that I think everyone should learn a very very very basic level of programming and for two reasons:
1) Those who like it will take it further.....
2) Even writing a trivial program requires getting certain sorts of thought processes right. Once you can write trivial programs you may not be valuable as a programmer, but you will be empowered to interact with computers if you ever find yourself in your chosen work on a tangent where that's helpful.
Programming differs from other creative activities in that it's about creating a processes that create things.
Consider art. You draw a picture with pencil and a piece of paper. In programming, you define a process of drawing a picture.
True, you can still draw by hand just fine. However, imagine a picture that only exists when someone is looking at it—a picture that you can't draw in advance, only define a process that will draw it at someone's request. That's interaction, which is what programming is mostly about.
There are other activities that involve defining processes of building things—entrepreneurship comes to mind. However, programming seems to be the only one where building a process of creation is so pure and comparable to simply building a thing.
You don't have claim that programming is the bestest, most creative and constructive thing ever to say that programming has a mix of creative, constructive activity that is unique to it and can be uniquely satisfying in a certain way (just as painting, dance, martial arts and system administration have their unique aspects).
True, but mastering a pencil and paper is going to have fairly limited benifits, compared to understanding how a computer works (considering that nearly everything you do has something to do with a computer).
Actually I think real art & design skills are already becoming more valuable than basic coding skills. As software becomes more and more about aesthetics and human interaction a really good designer with a strong style is going to be more valuable than the typical code monkey.
I know if I had it all to do over again I might trade my math & science classes for drawing.
I can agree with this. The fact is that companies are making it easier for people to make programs (note that most of them don't go anywhere like Android App Inventor) making it much more reasonable to have an art background than it used to be, since the entry level is, theoretically, lower.
Ah, that is until you look at the average salaries for developers versus designers.
Heck, even look at the average salaries of illustrators vs. graphic designers.
It's also MUCH easier for a developer to bootstrap and start a project on their own (be it a app, website, or add-on) than a designer/illustrator. The latter group can start some interesting projects on their own without needing to code but they are GENERALLY less scalable and lucrative.
This comment, I believe, completely undervalues the ability to communicate. A lot of the biggest changes in our world, good or bad, were spawned from books and writing. Written communication is still at the heart of our infrastructure. If you think about it, computers are mere vessels for messages. Aside from complex scientific computation and some entertainment, most people use computers for communication and for building things that allow communication.
If you can clearly and passionately describe a change you want to see in the world, you can get a lot of people behind you. Writing does, and always has, helped with this. I'd say being a very good writer can have a lot of benefits.
Now if you pair good writing with good computer skills, you have a the ability to get a powerful message to billions of people =]. I'd say they are both complimentary and extremely useful tools.
Have you considered a pencil and a paper? Crayons? Markers? Paints and a canvas? A hammer, some wood and some nails?
"Ah, but that requires something to create something!" Yeah? So does programming. It requires a computer (or access to one). It requires programs to run your code - free or otherwise. In fact, I'd argue the barrier for entry into programming is SIGNIFICANTLY HIGHER than MANY other creative outlets.