My sister is going through her PhD program for neurobiology (or something along those lines) and one of the requirements is for her to take some programming classes. She has taken some Java so far I believe, not sure if shes taken more.
I am learning to code a little right now while taking all of my basics in college. I will continue the line that our family has with programming.
My grandpa coded (with punchcards no less), my mom codes and I will code.
A WHOLE FAMILY OF PROGRAMMERS
EDIT: BTW, my dad tried programming in college with my mom, it wasnt for him. He had a hard time grasping some of the logic involved and it just didnt work with the way that he thinks.
Programming definitely teaches you a lot of invaluable skills. Logic, problem-solving to name a couple and it definitely enhances creativity though the last one won't be so obvious to people who don't program. ("Durrr...mindless key punching in front of a computer, why not be musician or dancer like me?")
Personally, I love programming as a hobby because it's another medium to create. Just like you can make a painting that you really love and would like to hang on your wall, you can create a game or a video downloader or something like that which you can take pride in. You can make it in any unique way you want. Also, call me insane but I actually find the coding process quite enjoyable.
I took one programming class as an undergrad, in scheme of all languages. I can't stress enough how useful this has been throughout my career, not because I have ever used scheme again, but because knowing how to learn a coding language has meant that when confronted with interesting excel issues, it is trivially easy for me to devise the right expression or formula to solve them. Without the CS class I probably would have looked at all the formulas and been like, "this looks hard, let me ask someone else to do this for me."
Anyway, if comfortability with excel and regular expressions is the only thing you get out of CS, it is totally worth it. Not to mention being able to learn basic html easily (back when websites were actually hand-coded) and lots of other things.
Learning to program is a great way of bolstering your critical thinking skills.
In order to program something useful outside of self-growth, it requires years of study and commitment. Most people can't even commit to diet or their new-years resolutions. Hardly anyone can be a professional programmer due to a lack of resolve.
When people say everyone should learn to program I really see a few skills that we want to teach, and they are skills that I think programmer CAN teach which is also important.
1. Boolean logic, operators and their application. Being able to really understand if, and, or, if and only if, xor, and not in a formal setting is a valuable skill. It's a really applicable skill to a wide array of problems. Likewise with the core concept of the other standard operators like for and while. It's just a way of thinking about the steps of a solution that's pretty handy. 2. Breaking down systems. A big part of programming after all is how to structure and build complex systems or solve complex problems one piece at a time. Again knowing how to do this is going to apply to a lot of things in life. 3. Understand some level of how computers work. Knowing at some level the structure of how a computer works and everything is going to be helpful in today's world. It's pretty worthwhile to say know the difference between a browser, the world wide web, and the Internet and knowing something about comp sci/programming is going to help with that.
Anyways recently I've been reading a book on drawing where the Author makes a pretty compelling point about learning to draw. Her argument is that drawing is a function of the 'right half' of your brain (not necessary the actual right hemisphere, just the type of actions we associate with the right half of your brain). By learning to draw, which is obviously a skill that's not widely applicable to many people, we learn to perceive better and to problem solve using the right half of our brain, a skill that is useful. I think you could make a similar argument about programming. It's NOT useful to most people to be able to program, but the skills you learn by learning to program are widely applicable.
There's also definitely a difference between being a programmer and being a 'software engineer'. Just like all of us can write without being authors or journalists, anyone can program but not everyone is going to become a software engineer.
If someone comes up with another way to teach the skills programming teaches without having to teach program, than that would be just as good. In either case I think the first 2 skills I mentioned are not being taught well in schools, so something like programming should be used to teach those skills.
On March 05 2013 02:41 thedeadhaji wrote: The ability to read and write code is similar. Familiarity with how code moves machines and software is the foundation to understanding how the most powerful man made forces in the world today are controlled and built. Being able to write even simple scripts or simple data filters can multiply your productivity or give you new perspective on how to frame problems and approaches to solutions. Without a basic understanding of code, one will be left behind in today's world.
He wont. Not if design matters, and it does. More than anything else.
See coders in my team at work always lament jokingly over the fact that people only ever see and give praise (or not) over what I do as a designer and the only time they hear from anybody is when things are not working / bugging / crashing. And I always equally jokingly reply that someday you will be replaced by machines anyway.
I respect the art of coding, and coming from a java background before I switched to design I know my fair share about it. I personally resent coders who do design. As I did. Because I know that while coding helps me in fields that require logic and abstract thinking it is hurtful to my creativity. And before you gasp and shout out that coding requires a great deal of creativity let me assure you that I know it does. But only in the realms of coding. Still a bold statement indeed.
In my years I've met and worked with quite a few coders who have great skills and very sharp minds but almost all of them lack the ability to think outside of the box when the box is not meant for them. They maneuver with great flexibility and a wealth of ideas but are almost always terribly restricted when it comes to see beyond the end of their noses. And it's not their fault. It simply is in their way of approaching a problem. They can perfectly explain a program with all its details and obstacles because they solved it and most of the time they are the only ones to understand all of it and are then baffled, almost ignorant of the fact why another mind completely unlike theirs wouldn't want that.
Well obviously because that other mind doesn't understand what it all does! But that's precisely the problem with most coders. Because it's not what it does, it's what it does for them. And by that you render the inner workings irrelevant. So a great deal of you might say they need to understand what it actually all does. I say we need to make it so it doesn't matter any more.
On March 05 2013 02:41 thedeadhaji wrote: The ability to read and write code is similar. Familiarity with how code moves machines and software is the foundation to understanding how the most powerful man made forces in the world today are controlled and built. Being able to write even simple scripts or simple data filters can multiply your productivity or give you new perspective on how to frame problems and approaches to solutions. Without a basic understanding of code, one will be left behind in today's world.
He wont. Not if design matters, and it does. More than anything else.
See coders in my team at work always lament jokingly over the fact that people only ever see and give praise (or not) over what I do as a designer and the only time they hear from anybody is when things are not working / bugging / crashing. And I always equally jokingly reply that someday you will be replaced by machines anyway.
I respect the art of coding, and coming from a java background before I switched to design I know my fair share about it. I personally resent coders who do design. As I did. Because I know that while coding helps me in fields that require logic and abstract thinking it is hurtful to my creativity. And before you gasp and shout out that coding requires a great deal of creativity let me assure you that I know it does. But only in the realms of coding. Still a bold statement indeed.
In my years I've met and worked with quite a few coders who have great skills and very sharp minds but almost all of them lack the ability to think outside of the box when the box is not meant for them. They maneuver with great flexibility and a wealth of ideas but are almost always terribly restricted when it comes to see beyond the end of their noses. And it's not their fault. It simply is in their way of approaching a problem. They can perfectly explain a program with all its details and obstacles because they solved it and most of the time they are the only ones to understand all of it and are then baffled, almost ignorant of the fact why another mind completely unlike theirs wouldn't want that.
Well obviously because that other mind doesn't understand what it all does! But that's precisely the problem with most coders. Because it's not what it does, it's what it does for them. And by that you render the inner workings irrelevant. So a great deal of you might say they need to understand what it actually all does. I say we need to make it so it doesn't matter any more.
The OP seemed to be saying that knowing how to code even just a little will help people who do repetitive tasks increase their output more, along with improving the way they think critically about things. This conclusion was reached given the video he posted from "industry titans" who know that the simplest program has the potential to increase a worker's output dramatically.
Your argument about having the ultimate "facade" that does everything the user wants without requiring the user to know anything about the program I thought was inapplicable because it didn't address the OP's point. It's not realistically feasible either; you cannot predict who your end-user will be and what needs they will have. If you have a program that the user can interact minimally with and have it return the user's expected output, you have basically created Artificial Intelligence.
thedeadhaji is right, "Without a basic understanding of code, one will be left behind in today's world." Take Roe's post, for example. How many times had his boss or the people who had worked for him done that same kind of task? How smart and badass did he seem when he got that job done in record time? How likely is this performance to weigh in on what jobs he gets in the future? I think it's quite likely that his boss will prefer her workers to have a cursory amount of programming knowledge going forward, thusly leaving others behind.
EDIT: Having a work structure that has "designers" and "coders" is also pretty archaic; the best coders are the ones who think about the design of their applications while doing the coding. If you separate the two, each disparate member is going to have a knowledge deficit in what they are employed as.
I agree, I started to try and learn to code seriously for 2/3 weeks or so. I just got bored. I was doing Project Euler but it just took so damn long to solve a problem I kinda gave up. Is it normal to that it takes like 6 hours to solve like one of the first Project Euler problems =.=? I hope I'm not bad at logic, I find Math very interesting. On that note. Does someone have a good first Math book to work through in my vacation? I stumbled upon this one: http://www.trillia.com/zakon1.html. But I don't have any answers for the problems sadly.
Man I wish I got programming, or math in general. Even basic arithmetic.
I originally left high school here in Ireland and headed to SFU in Vancouver to do Interactive Arts and Design, a mix of programming and design that was tailored to getting into the gaming industry (but not limited to that). Sadly as soon as it came to my programming class I realized that I just couldn't handle it. After some very basic hello world type stuff in python I got lost. I mean, programming and logic aside I'm a guy who didn't remember the code to the apartment block I lived in for a year - just the shape my hand was meant to move in (I always got mixed up between 7402, 7042 or 7204. Or even other combinations), mis-remember phone numbers constantly and really struggle with counting out change quickly .
The entire framework of thinking when it came to coding just completely left me at a loss, causing much keyboard banging, frustration and wasted hours figuring out how to get my coded mouse to find the cheese in my coded maze. Then came the midterm where I walked out 20mins in, dropped out of the class, essentially ending my dream of making da vidya games. When I think of the careers and opportunities that I could take advantage of with a CS degree I cry inside Much respect to the code monkeys who actually make things work around these her internet parts
On March 05 2013 03:53 RoyGBiv_13 wrote: I recently posted on my fb an offer to help anyone interested in getting started to code. Only 2 people have expressed interest in that, and of them, neither has committed. Maybe the next generation will have the time?
People are lazy and programming is "hard". The biggest problem though is that people have no connection to programming; they just don't see the point. If someone has no interest in it, it'll be a waste of time trying to teach them. Would you be interested in learning how to ride horses or in learning about interior design when someone posted that on facebook?
You're looking at it from an employment perspective, even though millions of people use computers and aren't employed in the IT field. I think he would liken it to being interested in reading, or knowing how a car works, i.e., more general things that can be applied outside of a livelyhood context.
I have no idea what you are trying to say. I meant teaching them at a basic level, which most people simply don't have an interest in. I've tried. It's the same thing with cars, just that more people are interested in cars and therefore know more about them than they do about computers.
The biggest response I get is that people are afraid that programming is "one of those skills where the more you learn, the more you realize how much more you have to know." I cannot dispute that, but I did point out that programming also has immediate impact, so you won't have to learn it all for you to begin using it. In fact, your second or third program is usually the first time you "scratch your own itch" and solve a problem you had.
I'll agree that people just aren't interested in learning it as a "basic" skill. Maybe we should change that? Anyone else want to make their own offer to their social graph?
As someone who has no background in coding at all (ie: thinks ruby and python are stuff you find in a store and a zoo),but nevertheless has a facination with the whole tech startup culture, I feel like an outsider with his nose pressed against the window looking in. Theres a guy at the door smiling and telling me to come in, it's not scary at all and it'll be great fun! He looks like this;
I really like the OP's analogy of comparing coding to writing. But we all know how highschool English is like a gas chamber where the desire to write go to die. As someone who is interested but hesistant to learn to program, I've taken a look at most of the free "learn to code" options out there (ie:code acadamy,udcity,khan etc). What I want to know from actual programmers is, if you were to learn from scratch or had to teach a relative from scratch, will you use those options? Are there better ones? Would you teach them yourselves instead so you can accelerate their learning and keep them interested with better projects than "how to make pong".
On March 05 2013 02:41 thedeadhaji wrote: I personally think coding (or scripting) is similar to writing. Not all of us are good enough, motivated enough, or would even enjoy writing for a living. But because the written and spoken language drives much of the world today, it's important to have a strong grasp of language, be able see how it is being used for or against you and be able to use it to your advantage.
The ability to read and write code is similar. Familiarity with how code moves machines and software is the foundation to understanding how the most powerful man made forces in the world today are controlled and built. Being able to write even simple scripts or simple data filters can multiply your productivity or give you new perspective on how to frame problems and approaches to solutions. Without a basic understanding of code, one will be left behind in today's world.
I really like how you wrote that. It's almost like if you were to visit another country and know nothing of their native language. Not even such things as, where is the bathroom, or may I buy some food.
Nice crosspost from HN, but I really would have liked it if you had included a quote/blurb from the "Programming is not for Everybody" post... YouTube embeds have a way of suppressing everything else in a post (people won't look at anything else), for better or worse.
I feel that a lot of comments and the video itself rely on too many generalizations. What is "coding?". Some 2 line bash script that saves you the 10 seconds of typing out some commonly used commands? A 1000 line two week project in C for your operating systems class? Some web page or document written in [insert markup language here]? The next-great videogame that takes years of development by a team of thousands? Sure, getting people to "code" is great. But what is "coding"? Does everyone need to learn every kind of "coding" there is? I'm sure Chris Bosh had a lot of fun "coding in college."
Getting people to "code" is an empty goal. Teaching people to be curious and work on projects that require an understanding of programming languages is much more meaningful.
I'm deeply troubled by this idea that coding is suddenly the most important thing that anyone could learn
I suppose this is not really different from my general beef that our cultural attitude towards education has tunnel vision for STEM
On March 05 2013 13:21 Loser777 wrote: Getting people to "code" is an empty goal. Teaching people to be curious and work on projects that require an understanding of programming languages is much more meaningful.
I don't think everyone can learn to code or that everyone even wants to. It goes a bit further than just knowing addition and your multiplication tables if you want to compete with the kids who started early. While I'm sure a lot of programmers go on to management positions eventually and never code again they would have made it to management regardless.
It is true that all of those things exist, but it’s definitely the exception, not the norm, for a programmer. Most offices come equipped with a coffee machine, and a fridge to put your own food, often crowded with other people’s food that has been sitting there all week. They are in office buildings with gray cubicles, and they are fueled by stringent bureaucracy.
On March 05 2013 13:21 Loser777 wrote: Getting people to "code" is an empty goal. Teaching people to be curious and work on projects that require an understanding of programming languages is much more meaningful.
well said
I've never heard anyone say coding is the most important thing anyone could learn. Even within the comp sci department they say to keep your view on the whole picture of what you're designing and think critically about what you're implementing from an algorithmic approach, rather than focusing on learning one specific language. In fact all the teaching at my school is done language independent, so that you grasp the concepts and then can apply it to what you like. It's not philosophy but it's a useful and generalizable thing to learn and add to your skill set. But then again I go to a small liberal arts school