Basically an article that says a lot without saying anything at all. Learn to code if you want to or if you need to, but stop pretending that knowing how to write some markup, trying out a REPL or writing some quick scripts will give you some mystical insight as to how software works. Then of course "coding" by itself doesn't mean anything without elaborating on the particular paradigm and language properties.
At Axiom Zen we use tools such as Google Analytics for tracking interactions with our material, GitHub for internal collaboration and project management, and Intercom to connect with our users as well as monitor their use of our products. Without a foundation in coding, it would have taken me much longer to adopt these tools.
Really? At best, when it comes to Git, you're just learning a file system model and basic use of a shell. Assuming you're not using a GUI or GitHub's browser interface, which is likely.
I like people learning to code by their own volition. I don't like vapid fluff.
Learning code even pseudo code will teach you to think about how you solve something, it will allow you to think with the developer and most importantly you will be able to have informed opinions about the development phase.
The world would be a much better place if more people knew about coding, what it is and what it isn't.
Thats at least my experience from working with developers and being able to do some coding without ever calling myself a developer.
My sister is a nurse, and makes very similar arguments about everybody learning some biology. I imagine a physicist thinks everybody should learn about quantum mechanics.
Philosophers think we need philosopher-kings; warriors want a warrior-king; and on and on.
Lets let one another be; learn coding if you like, and let my sister continue nursing as she is so very capable of doing.
Hah! Everyone would indeed benefit from learning some biology, quantum mechanics, philosophy, and fighting! This is the principle upon which the US higher education system is based - and as someone who came to the US for higher education, I have to say it's the best setup in the world (as compared to the silo'd, short-sighted, and quickly obsolete teachings you pick up as an undergrad anywhere else). Were you kidding?
No, not really kidding. I resent having to study some superficial biology to satisfy somebody's notion of a good rounded education. I grew up in a University town with a large teaching hospital. We had biology inflicted upon us by well-meaning folk who wrote curriculum and were all related to the University in some capacity.
I'm not anti-learning. I object to somebody else dictating the set of superficial knowledge I need to learn.
Agreed, I had to learn Shakespeare and poetry in english classes at school. That has had absolutely zero positive impact on my life since then.
(I was good at science and maths type things, so it was painful to learn as well as me being really bad at it. I failed the exam two years in a row.)
Actually thinking back, being forced to read some books that I was not interested in (chosen by someone else), and write a report about what was great about it probably put me off reading novels for a good few years afterwards. It was a like an enlightenment when someone described a book to me that sounded interesting to me, I read it and enjoyed it (even learned from it).
It's not a demand it's advice. Advice that I believe is very valuable and have been for me as I am working as a designer i a technology driven industry.
Each to their own but you seem to be against this for the wrong reasons.
Everyone should learn some biology--and some philosophy, too--as well as some coding. That's not an exhaustive list, either.
Being an expert at multiple things may require prohibitive time expenditures, but it's quite possible to learn some of each of a wide range of subjects. They aren't mutually exclusive.
Dead wrong. All these tools require a very different way of abstract thinking away from the usual "press this button, machine will do this", and learning how to code (one way) will trigger the right part of your brain to help using these tools more efficiently.
There are many types of coders. If you're doing hardcore statistic and magic on your screen, it doesnt mean building a simple website and/or implemente a tracking call to GA (in case of a growth hacker) is any less important.
No, why not familiarize yourself with operating system concepts. It will be a lot more use. Maybe after that learn to code.
I am a developer. If I am installing a piece of third party software and it doesn't work, the last thing I am going to do is to dig into the code. It more likely that an environmental variable needs set, or a library is missing. No coding knowledge required to fix these things, but an understanding of how everything fits together is.
(Getting bored of these kind of statements from Obama and the likes).
You're a developer, so for you learning OS concepts is more useful. If you look at comments from non-developers who have learned the very basics of coding, you'll see their minds have been opened up to dimensions they never before considered possible. Looking at an OS after you have a rudimentary understanding of the building blocks is totally different than trying to learn each black box independently.
I used to think like you, I don't anymore. We (Axiom Zen) co-organized the HTML500, Canada's largest free learn-to-code event. In one day, 500 people came together and learned the very basics. The response was overwhelming, check it out for yourself:
https://twitter.com/search?q=%23html500
These folks are looking with totally fresh sets of eyes at what you and I take for granted. Learning the basics gives them the same appreciation you and i have for the abstractions that can be built on top.
You don't need to be a developer to know system administration. Hell, it used to be a given, but the barrier to entry has diminished significantly with the advent of the GUI and now consumer electronics.
I agree with the OP. It's important to learn system administration before programming. Know your environment.
Writing markup is fine and will help you understand what's going on when you view page source, but it's hardly the enlightenment you make it out to be.
"...but it's hardly the enlightenment you make it out to be."
I really can't understand how anyone who does sysadmin work and any amount of programming can say this.
My mastery of computers grew organically. I started out with "power user" stuff. Namely, tweaking my computing environment (Windows, at the time) to my liking. As I tweaked, I inevitably broke things, which meant I had to learn to fix them. It wasn't long before I realized that being able to fix computers when something goes wrong was a valuable skill, so I developed that skill further.
I had a friend who wrote simple programs in VisualBasic from around the time that Windows 3.1 came out. He wrote a baseball card database application that we both used to catalog our collections. From that, I understood the utility of programming as a means to solve problems that were imporant to me, but I was too consumed with other things. It wasn't until the internet gained popularity that I started to write programs. What I'm getting at is that I was late to the game. I was in to computers for a long time before I had much interest in programming.
My skills as a sysadmin were pretty decent to begin with, but I became a troubleshooting superman as my programming skills developed. It literally changed my entire perspective, and even my methodology, when troubleshooting. I could read a stack trace! I could load up dump files, import symbols, and dig around to find the offending file, which would lead me to a specific application or a device.
Even at a very basic level, learning to program taught me a tremendous amount about how software works. Those insights led me down the correct paths when working as a sysadmin. I began to understand not just what to do, but why.
I had done a number of basic programming classes well before I went to university to study it. The stuff they teach you is not especially useful. For loops, and if staments. Its easy. Learning to structure a larger scale project is a lot more difficult, and that requires at least some experience that you aren't going to learn in a beginers coding class.
I took a number of basic math classes well before I went to university to study it. The stuff they teach you is not especially useful. Addition, multiplication tables, and trig identities. It's easy. Learning to model large systems is a lot more difficult, and that requires at least some experience that you aren't going to learn in a beginner's math class.
The point I intended to make is that after various beginner level programming classes, I still couldn't create anything especially useful to anyone else. I could draw something on screen, but I couldn't ship it as a standalone.
I am fairly certain that you will use basic addition / multiplication in everyday life without having to be a maths expert, and have it be useful, even essential to you.
Anyway, nice strawman argument you are creating. On you go with the physics one....
(funnily enough I don't find myself using my school pyhsics in everyday life the way I use maths)
I took a couple of basic physics classes well before I went to university. The stuff they teach you is not especially useful. Elastic and inelastic collisions, deceleration from friction, F=ma. It's easy. Learning to model large systems is a lot more difficult, and that requires at least some experience that you aren't going to learn in a beginner's physics class.
I expect there are a lot of people who benefit from the lesson that computers do things in a certain order (I realize that this isn't necessarily true...).
yes it beneficial to know how coding works, but I would say knowing how eveything fits together is much more useful, and probably teaches a similar line of logical thinking - breaking problems down into smaller pieces.
I think many developers are missing out on an opportunity to further their field.
With understanding comes respect. With respect comes the opportunity to have an informed discussion about ex. a project and why it's going wrong. A discussion where you as a developer do not feel like you are speaking to a black hole.
I never understood why so many developers are against this. Overall it's to your benefit.
> With understanding comes respect. With respect comes the opportunity to have an informed discussion about ex. a project and why it's going wrong. A discussion where you as a developer do not feel like you are speaking to a black hole.
Many people can understand the basics of civil and mechanical engineering, even aerospace engineering. It can be explained to them, when a walkway collapses [1], that the cause was a too heavy load and improper design/construction.
But try explaining why we can't write a program to efficiently solve every case of some NP-space problem that comes up frequently in an industry. Or why some program has a particular error, and how it's related to a dependency beyond our control. If customers/managers have a basic understanding of the field (which can often be true for other engineering disciplines) because they have a half-way decent mental model of how programs work, things might be much better for us.
I have had to deal with self taught bioinformaticians code. Basically it needed a rewrite. It was painful. Functions within functions, not for some elegant functional programming style, but because they didn't know classes or modules (she almost seemed proud when she claimed she didn't know object oriented programming). "Indexes" and "indexes" used as variable names in these same functions. Thats my reason for wanting people to learn it properly.
Crappy annalogy. You are ill you go to your doctor, or someone that dropped out of med school after a few weeks - they know the basics?
The real question you should ask yourself is would you rather se a person who had no medical training what so ever or someone who dropped out but get the basics.
My 2 cents... This is not easy. Understanding coding has a much higher barrier to entry than simple proficiency in other under-utilized fields like Statistics and Economics. It is very hard to say this is something EVERYONE needs to know.
I have to disagree. Both statistics and economics requires understanding of Math, which lives on the same side of the brain that's needed for understanding logic, thus coding falls into the same bucket. Though I suspect you're refering to "understand coding" as "understand complex algorithm". In which case, I agree because there are many type of coder, and some of which doesnt neccessarily needs to "understand and/or write complex algorithm".
Here's the context... Someone with moderate statistics can take a Microeconomics class and with a few hours a week of studying can get conversational, and apply it. With only introductory calculus, they can take a second and third class, and know enough to be professionally employed in the field. 90% of the folks who start the first class can take the 2nd and 3rd.
3 classes isn't enough for competence in coding, and much less than 90% get out of the first class.
That's because we have 12 years (in the US) of general math studies to prepare us for stats and calculus. Integrate programming into the sciences and math courses (physics and geometry have obvious points for integration, I'm less certain about the others) and a first course in programming will actually be able to get students much further than they often do today.
I actually disagree. Maybe this sounds like nitpicking, but I think it would be much more beneficial for non-technical people to be familiar with high-level, commercially used concepts in computing such as servers, databases, how the web works, and how data is managed in general. At least to me, learning 'code' has the connotation of learning the bare minimum to make a web app. Maybe I'm wrong, but that's what most of these 'learn to code' initiatives seem to push and it gives people the wrong idea on how much they've really learned.
all these comments are all like saying "i think it would be better if electricity conducted faster through plastic than copper" - regardless of your reasoning of where is the "better" place to start, the reality is if you spend time talking to non-technical folks they don't give a hoot about servers and databases, they get excited about the possibility of just building something. after they've built something simple, and overcome the hump of seeing all of this as magic, they are ready to dig into everything else.
spend time talking to your customers before prescribing solutions to their ills - it applies to startups as well as social good projects.
Yeah I don't think we're talking about the same 'customers'. I would not consider people who want to build something as a subset of the people we're talking about when we say 'everyone should learn code'. People who are actually motivated have bountiful, free resources to learn how to program online. People who want general knowledge of the technology landscape, at least enough to contribute in a career setting, might not benefit from skimming through a zed shaw book or doing codecademy for a week.
Coding is not the literacy of the future, nor will knowing how to code let you use many software products easier to use. If you have to know how to code to use software products, then we as programmers have failed. One does not need to be a mechanic to drive, to be a doctor to be healthy, or an director to enjoy a movie.
Can it help you be more analytical, sure, and that might be a reason to learn to code.
42 comments
[ 30.2 ms ] story [ 1579 ms ] threadAt Axiom Zen we use tools such as Google Analytics for tracking interactions with our material, GitHub for internal collaboration and project management, and Intercom to connect with our users as well as monitor their use of our products. Without a foundation in coding, it would have taken me much longer to adopt these tools.
Really? At best, when it comes to Git, you're just learning a file system model and basic use of a shell. Assuming you're not using a GUI or GitHub's browser interface, which is likely.
I like people learning to code by their own volition. I don't like vapid fluff.
Learning code even pseudo code will teach you to think about how you solve something, it will allow you to think with the developer and most importantly you will be able to have informed opinions about the development phase.
The world would be a much better place if more people knew about coding, what it is and what it isn't.
Thats at least my experience from working with developers and being able to do some coding without ever calling myself a developer.
Philosophers think we need philosopher-kings; warriors want a warrior-king; and on and on.
Lets let one another be; learn coding if you like, and let my sister continue nursing as she is so very capable of doing.
But you are missing the point here.
Software can simulate most things in this world for that alone its very useful to understand coding. You get way more buck for your money.
I'm not anti-learning. I object to somebody else dictating the set of superficial knowledge I need to learn.
(I was good at science and maths type things, so it was painful to learn as well as me being really bad at it. I failed the exam two years in a row.)
Actually thinking back, being forced to read some books that I was not interested in (chosen by someone else), and write a report about what was great about it probably put me off reading novels for a good few years afterwards. It was a like an enlightenment when someone described a book to me that sounded interesting to me, I read it and enjoyed it (even learned from it).
Each to their own but you seem to be against this for the wrong reasons.
Being an expert at multiple things may require prohibitive time expenditures, but it's quite possible to learn some of each of a wide range of subjects. They aren't mutually exclusive.
There are many types of coders. If you're doing hardcore statistic and magic on your screen, it doesnt mean building a simple website and/or implemente a tracking call to GA (in case of a growth hacker) is any less important.
I am a developer. If I am installing a piece of third party software and it doesn't work, the last thing I am going to do is to dig into the code. It more likely that an environmental variable needs set, or a library is missing. No coding knowledge required to fix these things, but an understanding of how everything fits together is.
(Getting bored of these kind of statements from Obama and the likes).
I used to think like you, I don't anymore. We (Axiom Zen) co-organized the HTML500, Canada's largest free learn-to-code event. In one day, 500 people came together and learned the very basics. The response was overwhelming, check it out for yourself: https://twitter.com/search?q=%23html500
These folks are looking with totally fresh sets of eyes at what you and I take for granted. Learning the basics gives them the same appreciation you and i have for the abstractions that can be built on top.
I agree with the OP. It's important to learn system administration before programming. Know your environment.
Writing markup is fine and will help you understand what's going on when you view page source, but it's hardly the enlightenment you make it out to be.
I really can't understand how anyone who does sysadmin work and any amount of programming can say this.
My mastery of computers grew organically. I started out with "power user" stuff. Namely, tweaking my computing environment (Windows, at the time) to my liking. As I tweaked, I inevitably broke things, which meant I had to learn to fix them. It wasn't long before I realized that being able to fix computers when something goes wrong was a valuable skill, so I developed that skill further.
I had a friend who wrote simple programs in VisualBasic from around the time that Windows 3.1 came out. He wrote a baseball card database application that we both used to catalog our collections. From that, I understood the utility of programming as a means to solve problems that were imporant to me, but I was too consumed with other things. It wasn't until the internet gained popularity that I started to write programs. What I'm getting at is that I was late to the game. I was in to computers for a long time before I had much interest in programming.
My skills as a sysadmin were pretty decent to begin with, but I became a troubleshooting superman as my programming skills developed. It literally changed my entire perspective, and even my methodology, when troubleshooting. I could read a stack trace! I could load up dump files, import symbols, and dig around to find the offending file, which would lead me to a specific application or a device.
Even at a very basic level, learning to program taught me a tremendous amount about how software works. Those insights led me down the correct paths when working as a sysadmin. I began to understand not just what to do, but why.
Should I do the physics version as well?
I am fairly certain that you will use basic addition / multiplication in everyday life without having to be a maths expert, and have it be useful, even essential to you.
Anyway, nice strawman argument you are creating. On you go with the physics one.... (funnily enough I don't find myself using my school pyhsics in everyday life the way I use maths)
I took a couple of basic physics classes well before I went to university. The stuff they teach you is not especially useful. Elastic and inelastic collisions, deceleration from friction, F=ma. It's easy. Learning to model large systems is a lot more difficult, and that requires at least some experience that you aren't going to learn in a beginner's physics class.
I expect there are a lot of people who benefit from the lesson that computers do things in a certain order (I realize that this isn't necessarily true...).
With understanding comes respect. With respect comes the opportunity to have an informed discussion about ex. a project and why it's going wrong. A discussion where you as a developer do not feel like you are speaking to a black hole.
I never understood why so many developers are against this. Overall it's to your benefit.
Many people can understand the basics of civil and mechanical engineering, even aerospace engineering. It can be explained to them, when a walkway collapses [1], that the cause was a too heavy load and improper design/construction.
But try explaining why we can't write a program to efficiently solve every case of some NP-space problem that comes up frequently in an industry. Or why some program has a particular error, and how it's related to a dependency beyond our control. If customers/managers have a basic understanding of the field (which can often be true for other engineering disciplines) because they have a half-way decent mental model of how programs work, things might be much better for us.
[1] http://en.wikipedia.org/wiki/Hyatt_Regency_walkway_collapse
Crappy annalogy. You are ill you go to your doctor, or someone that dropped out of med school after a few weeks - they know the basics?
The real question you should ask yourself is would you rather se a person who had no medical training what so ever or someone who dropped out but get the basics.
Thats the relevant analogy.
3 classes isn't enough for competence in coding, and much less than 90% get out of the first class.
spend time talking to your customers before prescribing solutions to their ills - it applies to startups as well as social good projects.