Programming Education: Selling People a Lie? (blogspot.com)
An anonymous reader writes: It's hard to exist in the tech world today without hearing the constant refrain about learning to code: "it's easy, we desperately need programmers, and everyone should learn how!" UK software developer Mike Hadlow disagrees, strongly. He says, "Formal education for programmers seems not to work very well and yet the majority of those who are successful programmers are mostly self taught. On the one hand we seem to have people who don't need any guided education to give them a successful career; they are perfectly capable of learning their trade from the vast sea of online resources available to anyone who wants to use it. On the other hand we have people who seem unable to learn to code even with years of formal training.
This rather puts the lie to the barriers to entry argument. If the majority of current professional software developers are self taught, how can there be barriers to entry? Anyone with access to the internet can learn to code if they have the aptitude for it. The evidence points to a very obvious conclusion: there are two populations: one that finds programming a relatively painless and indeed enjoyable thing to learn and another that can't learn no matter how good the teaching. The elephant in the room, the thing that Yvette Cooper, the 'year of code' or 'hour of code' people seem unwilling to admit is that programming is a very high aptitude task. It is not one that 'anyone can learn', and it is not easy, or rather it is easy, but only if you have the aptitude for it. The harsh fact is that most people will find it impossible to get to any significant standard."
This rather puts the lie to the barriers to entry argument. If the majority of current professional software developers are self taught, how can there be barriers to entry? Anyone with access to the internet can learn to code if they have the aptitude for it. The evidence points to a very obvious conclusion: there are two populations: one that finds programming a relatively painless and indeed enjoyable thing to learn and another that can't learn no matter how good the teaching. The elephant in the room, the thing that Yvette Cooper, the 'year of code' or 'hour of code' people seem unwilling to admit is that programming is a very high aptitude task. It is not one that 'anyone can learn', and it is not easy, or rather it is easy, but only if you have the aptitude for it. The harsh fact is that most people will find it impossible to get to any significant standard."
The cake is a lie!
Long live the cake!
People who take programming courses and can't hack it can still list that as a qualification to become an Agile Project Manager. That role is best filled with a person who can't program and is jealous of those who can.
Seems to me that there's a disconnect in the way people think about programming versus thinking about math and logic. Might it make more sense to people to think logically and procedurally, then worry about applying that to a computer? Those skills are useful in life itself and are not limited to even mathematics disciplines, let alone computer programming.
Do not look into laser with remaining eye.
"High aptitude task" my ass. Programming these days is assembly line work at the direction of your team lead. It'll be automated away soon enough.
Programming education should try to find people who have the aptitude to be good programmers and quickly weed out those who never will.
Formal education (i.e. a Computer Science Degree) teaches you how to think in certain ways and how to generalize problem spaces. It is not the same as job training. "Learning to code" is more akin to job training. Learning both is what makes you an invaluable resource but if you're just looking for a career and to get by then, yes, the job training aspect of "learning to code" does not require formal education and a smart, self-starter who has the job training part down is better then a dumb non-self starter who is formally educated. This is true in just about any field.
The best scenario is a smart, self-starter, that has formal education and job training but there aren't near enough of those to go around.
Just like not everyone in the 1950s needed to learn how to make electronics.
Different people are different. Lets not force every round block through a square, nerdy hole.
We should TRY to teach everyone to think and problem solve though. Which is not at all dissimiliar from coding but different emphasis.
How would the two classes be different? Oh idk. Given them a physical form of the traveling salesman (make it a board game!) one week and a tower of hanoi the next. Yes, actual physical things. Give them unsolved problems and see what they can come up with since google ain't going to help them. Etcetera, etcetera.
These poor fucking kids will be staring at a screen for the next 50-70 years after school. Give them the pleasure of something physical first. Then those who show any aptitude for it, chain to a desk and compete with a coding factory in asia, for next to no pay (meaning 1 snack a day from the vending machine for being a good code monkey).
This is an insult. It is true that some have natural aptitude, but it can certainly be taught to anyone in the right circumstances. The same is true of mathematics. Of course, the cost of learning may be much too high for an individual or society to bear unless they have a certain amount of aptitude already, and a willingness to work within the constraints of personal economy.
When I learned to program initially, it was the minimum required statements in C64 BASIC to load a disk and run basic programs. I can honestly say I was too young to form complete sentences in my native language, so the idea that anyone would have an aptitude for coding beyond basic copied statements at that point seems ridiculous to me. After that I was introduced to some DOS commands and QBASIC, which didn't get me much farther than simple text entry and character comparisons. I had not learned algebra yet so the idea of doing much more never even crossed my mind.
This is not intended to be an autobiography but suffice to say programming is nothing but mathematics, and mathematics is nothing but a universal language of thought and order. To deny this from some because of how they were born is tantamount to eugenics.
Even if you *can* program it doesn't mean you'll actually want to do it.
Many aspects of programming are boring and tedious. You need someone who can handle the abstract thinking, memorize the various components involved, understand how they fit and how to change them, and then sort through the various administrative steps(version control, bugtracking, communicating with devs/qa/mgmt, etc). Also, many programming jobs are very un-social. I've had times at work where I did't speak to another human for several weeks.
http://www.masturbateforpeace.com/
We should get rid of history classes while we're at it... how many kids become historians?
In fact, let's go back to apprenticeships and work-training. Imagine how quickly we could get working-class children into their lifetime careers of burger-flipping and form-filling and ditch-digging if we remove all the distraction of a 'well-rounded education'...
How can I believe you when you tell me what I don't want to hear?
In my experience, from numerous Agile/Scrum/Kanban meetings, the concept was sound -- get people together, find out where everyone is at, find what is slowing stuff down, go on.
However, that works in Japan where there is a level of respect from employers to employees.
Here in the US, what was, "what did you do, what are you planning to do, and what is in your way" becomes "explain the pathetic amount of stuff you did", "make promises for next meeting", and "point the finger at someone else." The concept of a blocker, for example is used as a way to blamestorm, and ultimately, a way to find who gets shitcanned first.
As for development in general, find a niche. Mainstream development stuff is offshored, and if by chance it isn't, it is handled by H-1Bs that rotate out after 90 days so they can't get a chance at a green card. Even if you find a dev job, you have to program at least 1000 lines of code a day, or else you will get replaced by someone who will. Bugs? If it builds, ship the damn thing. Security problems? Security has no ROI, worry about it when the lawsuits happen.
I personally recommend people go law, accounting, or a trade. You cannot offshore a plumber, electrician, or lawyer, and there is no such thing as an unemployed attorney. No, one may not wind up as a senior partner at Ben Dover & C. Howlett Fields... but one can eke out a living.
Back In The Day, I had Geometry in High School. 10th grade.
I don't know what others Geometry classes looked like, but ours was proofs. All proofs, nothing but proofs. We never did anything with compasses, protractors, straightedges, etc. Just proofs. Day in and day out. First 6 weeks was vocabulary, the rest of the year -- proofs.
Strangely, at the time, we had Saturday classes -- just the way it worked. I had to go in to Geometry class on Saturday, all of the students did.
But on those days, the teacher would basically hand out worksheets and we would work problems. These worksheets typically had 3 problems on them.
I would finish those problems in 2 minutes. Literally, zing, zang, bing, bang, boom. Done.
For me, proofs in Geometry were trivial. As the year advanced, we simply adde more theorems and axioms to tap in to do the proofs, but the logic -- that was all the same. Since Geometric proofs are all about logic. Damnable, inarguable logic.
"Teacher, can I leave now?" "No! You must stay here the entire class." he'd shout at me as he was helping some other student. And we all know that student, perhaps it was you. The student who Did Not Get Geometry and proofs. They'd been sitting in that chair the entire year, and, never "grokked" it. All they can do is struggle.
So, it was no surprise that I took to computer programming like a moth to flame. I get it. I'm good at it.
And I know there are a lot of people who will not be. I did not know Geometry going in, heck I don't know it now -- it's been so long. But they did not have to teach me Geometry per se, they had to show it too me, show the logical relationships, how it starts, and that was it. After that, just feed me theorems. Operations that I can use.
I have no problem with children being exposed to programming. That's how you find people like me. But I think, with the ubiquity of it today, when you could program on your cell phone if you were so inclined, the people that will do well and attend those classes, will already know what they need to know before they even go in.
But it's like the Force. You have it or you don't. Some have it stronger than others, some develop it more easily than others. But if you don't have it, the Force won't be with you. No matter what Master Jedi you train under.
If coding a language, which it is... then everyone has an aptitude to code. ome coders just think their better than others at coding, but really it's about the task at hand.
It's more about work tasks than software coding aptitude.
TFA argument making it sound like those english-lit snobs... If someone said good English require high aptitudes is going to learn that they are full of themselves.
Is this even true? Most of the major free software developers have degrees.
love is just extroverted narcissism
Most "programmers" I know, and work with, have a formal education in software engineering or computer science. They might have been self taught before the started higher education, but that is not the same as saying that the formal training is useless. Being self taught seems like a difficult sell, at least when entering the job market - experience can do a lot. The course of higher education teaches a lot of things one usually wouldn't end learning by self-learning programming. Maths, physics, chemistry, team-work (sometimes at least).
Aptitude is important, but developing software is a lot more than programming. It's about understanding the problem at hand, being able to talk with people, being able to deliver on promises in a timely fashion - oh, strike that last thing.
As for teaching programming in school (before higher education): it might be important in helping people free their minds and think smarter. If it could reduce the amount of people being unable to use simple software I would be very happy. A lot of people seem unable to think logically about even the simplest of things when it comes to computers, electronics, and software.
In the article there are a lot of comparisons to doctors. Like, how you can become a doctor by spending 7 years in a medical school, etc, whereas in programming you do not have a clear path.
To my mind, this only proves that nobody really questions the qualification of the doctor. The patients are (or considered to be) not qualified to do that, so unless you are very bad, you can carry out a successful doctor career without really mastering the skills. I am sure in no way can all people become good doctors if they spend 7 years in medical schools, and the same applies to programmers. The only difference is that for a computer program it is much easier to see if it works and who is responsible when it doesn't.
I'm sure Ratatouille wasn't the first to say it but it's the one I know.
"Not everyone can cook, but a great cook can come from anywhere"
That might be the standard, instead of getting everyone to code constantly, just expose everyone enough that they know if they like it.
I strongly recommend for anyone considering a computer science degree to pick a dual major.
Mine was a hybrid telecommunications engineering and computer science degree - it was very interesting to observe those of us who clearly enjoyed programming and had the knack for it would elect for increasingly more programming and computer science oriented courses, while those who didn't had many other good course options. In our course of about 35 people, about half had the knack for programming while the other half always seem to need help.
Where is he getting these numbers? From his immediate circle of friends? I have never met a successful programmer who hasn't been educated, either directly as a CS major or taking classes after getting a degree in another field. Obviously hi is wrong. You must first get a degree and then perhaps get more training upon that.
My position is a valid as his.
putting the 'B' in LGBTQ+
Anyone with access to the internet can learn to code if they have the aptitude for it. The evidence points to a very obvious conclusion: there are two populations: one that finds programming a relatively painless and indeed enjoyable thing to learn and another that can't learn no matter how good the teaching.
I fall somewhere in the middle. I have programmed in languages from Assembly to PHP/Javascript (if you call those languages), so I have the ability to code.. I also know I don't have the aptitude to; I find typing at a keyboard to be very monotonous and am quickly bored. This doesn't mean I don't have desire to code, I just find it boring. I wish I wasn't bored with it.
However, I have a colleague who loves to code and is quite good at it. However, when he gets stuck he doesn't ask other programmers (I no longer code), he asks me, because I don't see the code, I only see the logic. I've helped him solve a number of problems simply by not being a coder but being a problem solver. I'll let him code the details needed to accomplish the solution.
That being said, knowing logic is fundamental to solving problems. People with strong logic skills can solve problems. Coding does help you learn how to be logical and solve problems.
Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
Without being able to offer any evidence, I would claim that a lot of developers may self-classify themselves as self-taught even if they also have formal CS education. So many of the self-taught programmers may NOT have had such an easy time getting into the workforce without that education. Hence the argument about barriers to entry MAY be inaccurate.
As a hiring manager, I'm unlikely to pay much attention to a candidate who can only claim being self-taught as a qualification. Without some sort of education or certification, or at least proof of contributing/authoring some significant code it's going to be hard to be taken seriously.
For those of you who are blessed to find this reference utterly mysterious, I hold up for you a case in point of John Roger's insightful comment on Kung Fu Monkey:
“There are two novels that can change a bookish fourteen-year old’s life: The Lord of the Rings and Atlas Shrugged. One is a childish fantasy that often engenders a lifelong obsession with its unbelievable heroes, leading to an emotionally stunted, socially crippled adulthood, unable to deal with the real world. The other, of course, involves orcs."
Starships were meant to fly, Hands up and touch the sky - Nicky Minaj
A great sculptor (I forgot who) was asked how he makes his wonderful statues. He said "Easy. Just chip away all the marble that doesn't look like the statue".
It's the same for programming. Yes, it's easy if you know how it's done. It's insanely difficult for people who don't.
I've spent quite a bit of time trying to teach people how to program. It's futile. Mostly because we teach them the wrong skills. People don't need to learn how to program until they grasped the basic underlying concept of logic and problem solving. Once you taught them that, coating it in code is trivial.
The problem is that people fail at the underlying concept.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
What a shit post. How did this get past moderators? Are you really gonna take a submission from some jackass's blog post saying "formal education" doesn't work, and the "majority of current software development professionals are self-taught" based on some really shitty SO and Twitter polls?
The world needs artists, psychologists, electricians, plumbers, garbage men. Not everyone needs to be able to code, and I would excellent therapists are no less skilled than excellent coders.
Besides which, the minute everyone becomes a coder is the minute we all stop having a job. How many people would pay lawyers if they could read legal mambo jumbo? How many people would pay doctors if they could solve their own health problems?
The world is fine the way it is. Not even needs to code, nor is coding the gold standard for being "logical".
The OP claims that most professional programmers are self taught. Certainly a lot are, - maybe even most. However I would bet that there are certain types of projects that are mostly handled by people with formal training.
I've worked with lots of programmers, both self taught and those with CS degrees. There are certain concepts that the self taught group aren't usually proficient with, - pointer arithmetic being one of them. But a lot of coding can be done without understanding that.
Programming is like any other skill. Some people have more of an aptitude for it than others. And like any other skill, there is more than one way to learn it. I have no formal training as a plumber but I managed to replace a ton of galvanized pipe in my home with copper about 15 years ago. That said, I don't have near the skill and knowledge a Master Plumber does.
I had an aptitude for programming. A lot of what I've learned over the years has been self taught. I also have a CS degree. Though I've always been interested in computers, those early programming classes I had back in high school (over 30 years ago) were valuable and I may have chosen a different career had I never had that exposure.
He's absolutely right... if you're talking about production floor, practical, every day professional programming skills. But it's fair to note that the majority of self taught programmers do take formal programming courses through the course of their careers, especially if they move from full stack to specializing. As you get older, you end up doing so much formal course work and ongoing education that the line between self taught and formally educated gets very blurry.
But I digress.
The problem with statements like this is that we as programmers assume that everyone who learns how to code is going to want to do it professionally. My first language was BASIC on the Vic 20 in 1987. We learned how to write loops, draw vector graphics on the screen, save code to a tape drive, and read bar codes by sight. I was in elementary school with 35 other New York City yeshiva kids, who I happen to know the majority of which are not programmers today.
For me, it was the logical basis of what has become an extremely gratifying, and often enjoyable career.
But even if it didn't work out that way, I would still think of the class as beneficial.
Coding teaches you to walk through problems step by step. It's a skill that's absolutely invaluable in life, and it does go against the grain of what most people consider natural thinking.
It doesn't really matter if you're trying to teach people to be production engineers or not.
The skill is incredibly valuable to have. Even if you completely forget the grammars.
This signature has Super Cow Powers
Not just for programming, it's every profession.
Any profession can be self taught (assuming you're smart enough). It may take loner, but it can be done.
Some people just like to waste money and be spoon fed what someone else thinks is important for the profession.
Big parts of the US college / higher ed system is that way.
Division 1 football and basketball The team only takes 20 hours a week. On paper only for the big games you have to miss class and you get lot's joke classes to fill the gaps. That voluntary team stuff is not so voluntary and it get's in the way of class.
You need to go to college has made trade / tech schools some what of a joke and they can be better off not being tied down to the college system.
The student loan system big banks make big bucks off that with little to no risk of a whammy. Very hard to discharge student loans even with death or disability. Much less if you end up $50K+ in the hole. With a mcjob.
We Tech skills needed for the job! Verys a lot from way to done to a hear is how to work with X tool in X to lot's of theory with little hands on skills.
This is not new, and well supported by IEEE and ACM research. One paper I keep handy is this one:
http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=291203
The problem is the time-variation of 200:1. Some people take 200 years to do what another can do in 1. You can't "teach" past a 200 year barrier. Case closed.
He is right in one thing. Programming is not easy. It is easy for programmers. However, it requires a specific mind set which includes to be able to deconstruct problems. You cannot really teach this at university. And you need to be able to tolerate frustration which is required to get an CS degree, at least at all universities I have been. And to some extend you can train that.
However, CS education does help people to become better or even good programmers if they have the right mind set. And CS is not only programming it is also about inquiring customers, deriving requirements, features, planning, software design, combined with topics like continuous integration and delivery, software evolution, product lines, version control, documentation (real documentation not the shit most people write which contains the same information as the code) etc.
And you should understand the application domains you code for.
Really, programming is the only profession I know of that consistently downplays the skill it requires. We all know that programming well is not at all easy. Sure, everybody can follow a tutorial and get instant gratification from writing a simple program that they could just as well copy verbatim from the tutorial, and then getting it to run. That's not programming. That's parroting.
Just because I could sit down at a computer and write in 10 minutes what my fellow students had been struggling with for an hour doesn't mean that programming is easy. A musician who can flawlessly and effortlessly play a live concert wouldn't call that easy. An interpreter who can translate multiple languages fluently and correctly wouldn't call it easy. Yet somehow we think we have to tell people that programming is easy or nobody would want to do it. Even if you ignore that programming often requires deep insight into the application domain, just the basic task of writing a non-trivial program where everything it needs to do is specified in great detail is so hard that the chance of writing it bug-free is practically zero. Programmers deal with complexities that are quite simply unmatched in any engineering discipline, but we tell people programming is easy. Let's not do that anymore.
Ah, it appears you haven't seen The Phantom Menace yet.
Turns out The Force is actually a by-product of microscopic symbiotes/parasites called midichlorians. Nothing mystical about it at all.
http://starwars.wikia.com/wiki/Midi-chlorian/Canon
As a self taught programmer who made a career of it I strongly disagree. Anybody can learn to code. And I mean learn, not "be taught". All it takes is years of painstaking work. Wether it's done as a kid for fun or as an intern for beer money or as a hack consultant for a small fortune, all that matters is the number of hours under the belt. And having the opportunity to put in those hours is a strong barrier to entry.
The specific mind set is experience, even for those who got it randomly.
...is not to train you to be able to do easy stuff that anyone can do. It's to give you a deep background in a subject you have aptitude for.
It's true that the vast majority of coders are self taught. It's also true that the vast majority of coders do little more than connect pre-assembled packages together and add "Ville" to the title screen.
Does that mean you necessarily need formal education to be a good programmer? No...but if you really are a good programmer and not a hack, you'll gravitate toward formal sources of information, whether at a school or online.
Dear God tell me English is not your first language...
Also, having a CS background (I didn't say degree - there is a difference) WILL make you a better programmer because you'll have an understanding of what's going on behind the scenes.
And often a greater breadth of knowledge. One of the advantages of a formal CS program is that one will most likely take classes in topics a student has no interest in. Yet those topics may be important or yield info that unexpectedly solves problem in other areas/topics. Many self taught tend to skip a topic or two and have gaps in their knowledge.
That said, in a formal CS program there are two obvious groups. Those who are there because they have a genuine interest in coding and the problem solving it involves, and then there are those who are there because someone told them it is a good career path. While both can graduate, the former (genuine interest) tend to be far better programmers. They will learn something, or more importantly do something, just for their own curiosity. Things unrelated to class assignments, and they learn more and become more proficient.
So the whole degree vs self-taught is sort of a bogus comparison. Many top programmers are both, degree and self-taught are not mutually exclusive.
So the blogger uses 2 polls in his article, one his own twitter poll of 101 responses, hardly meaningful. The other is a the 2015 Stack Overflow developers survey, that survey had 21,314 respondents for the education question which is certainly better than 101. He uses the graph for education to backup his statements which has the following data:
41.8% I'm self-taught
37.7% Bachelor of Science in Computer Science (or related field)
36.7% On-the-job training
18.4% Masters degree in Computer Science (or related field)
17.8% Online class
16.7% Some university coursework in computer science (or related field) but no degree
6.1% Industry certification program
4.3% Other
3.5% Intensive code "boot-camp" or night school
2.2% PhD in Computer Science (or related field)
1.0% Mentorship program
He then goes on to say "Only a third have a computer science or related degree and nearly 42%, the largest group, are self taught."
Turns out the percentages add up to 186.2%, the horror, some people had more than one source of education or they lied about their education. Now it's probably safe to assume that if the poll respondent had a PHD they didn't also claim a Bachelor and Masters degrees, that would mean that 58.3% of the poll have a computer science or related degree. If you include the response of some university course work it turns out that 75% of the respondents had some level of university training. It would seem that according to Mr. Hadlow's sources that university training is important.
Perhaps Mr. Hadlow should head back to university, his math and logic skills need refreshing.
That is really the bottom line here. If you want to be good at coding, you have to be smart, creative and logical. Additionally, it's also hard work so if you don't, at least, like it, you will not be able to take the pressure of the work that comes after you've overcome the frustration of something as fundamental as the semantics of coding languages.
Of course the way to fix this issue is to triple the salary of every coder, dba, sysadmin and networking professional on the face of the earth. But that won't happen because then there isn't a way to exploit the people who truley made for doing this work by driving the cost of employing them down. It's a delicious, if bittersweet, irony that technologists enjoy and tolerate simultaneously.
I know, it sounds elitist and politically incorrect however, that is just the reality of the situation. I didn't make it that way, the physics involved in the electronics of the machine running the kernel that compiles the code that I wrote, made it that way. The machine is ambivalent to your persona. Your warrior ways are meaningless compared to the power of the Source.
So, after acquiring all of the above attributes and then developing enough emotional intelligence to work with other people who share these skillsets, you will find that it doesn't matter if you're male, female, old or young, nor does your race, religion or sexuality - that actually makes it more interesting (to me anyway). Just be smart and cool, then you can join our club.
My ism, it's full of beliefs.
I agree. Salary.com has some breakdowns by degree by job title
http://swz.salary.com/salarywi...
http://swz.salary.com/salarywi...
Indeed.com resume section tells a different story for new york city and silicon valley if you look at the filters on the left.
http://www.indeed.com/resumes/...
http://www.indeed.com/resumes/...
He based the statistic from a self-reported stackoverflow survey. The survey itself says 38% of the people self-identified as professional programmers, 46% as other, and 16% as unknown. So it looks like most non-professionals on the survey don't have a degree.
Formal education (i.e. a Computer Science Degree) teaches you how to think in certain ways and how to generalize problem spaces. It is not the same as job training. "Learning to code" is more akin to job training. Learning both is what makes you an invaluable resource but if you're just looking for a career and to get by then, yes, the job training aspect of "learning to code" does not require formal education and a smart, self-starter who has the job training part down is better then a dumb non-self starter who is formally educated. This is true in just about any field. The best scenario is a smart, self-starter, that has formal education and job training but there aren't near enough of those to go around.
I'm old, started programming when 8-bit machines wandered the land. In those days a formal CS program largely left "learning to code" as an exercise for the student. A certain amount of "self taught" was expected in a university CS program. There would often be an intro to CS class that introduces the rudimentary concepts of computer programming and introduces students to some programming language. Then off to data structures where the professor generally sticks to theory and abstract pseudo-code and its left to the student to learn on their own time the designated programming language for the class well enough to do assignments. At best the TA would reserve a little discussion time for programming examples and questions.
But the preceding is not the "self taught" that I think is the important thing. Those with a genuine interest in programming will learn things and write code purely out of curiosity, to see if they can figure it out and do it, to try something new, etc. Things that are completely unrelated to class assignments. These are the people where formally trained and self taught combine to create some of the better programmers. The others that merely do the class assignments, who are there because someone told them its a good career path. They can graduate, some might be good but lacking that innate interest and curiosity to go learn on their own outside of assigned tasks (work or school) they probably won't be great.
As for those who are only self-taught. Its conceivable to become as well educated in the field as someone taking the classes but to be honest such individuals are very rare. Many self-taught will have gaps because they did not study something that had no interest to them, and miss something unexpectedly important or useful.
The first premise here - what it's all based on! - seem to have a huge flaw. Format education works just fine; the computer science degree is pretty much the gold standard. What the hell are you talking about?
See reddit.
"unless you are very bad, you can carry out a successful doctor career " Frank Burns eats worms.
The issue isn't about aptitude, it's about motivation. If a person chooses to go into a field for money rather than because it interests them, well there you are. If the motivation isn't because it's fun, it's a lost cause in any field.
you know the rest
--
Stay tuned for some shock and awe coming right up after this messages!
programming, or learn it
Anybody can do it. You can teach yourself, or have someone teach you. It is good for single moms too, as it can be done remotely. I encourage anyone to try programming. We need more programmers, and need to get the word out!
The main reason businesses want everyone to code is to drive the price of coders down. I mean how much do you pay if everyone can do it? Why not train everyone on how to manage a business so that we can drive that really expensive cost of management and CEOs down instead?
The population is growing, there is always a need to build new houses. Let's teach everyone to be a carpenter!
This obsession with teaching everyone to "program", for a seemingly unlimited range of definitions of 'program', is a fraud. It's solely to drive down the wages of programmers by convincing everyone that it doesn't require any special ability or mental discipline. Ten years from now the people studying it will realize they've been had but that will only be after a lot of corporate profits and human suffering.
First of all, you don't need to be a programmer to benefit from programming skills. Countless small business owners benefited from custom batch files, DBase forms and putting together Excel, Access and a little VB. We should work on modern replacement for these as well as widespread literacy rather than wasting people's money on cloud apps which are not tailored to a specific business.
Second, self-learning is a privilege of growing up with computers, stable/peaceful living arrangement and no other responsibilities. Many only get time to work on themselves only once they get into college with a loan and/or scholarship.
Finally, self learning happens by bits and pieces. I did quite a bit of programming in middle and high school, but certainly filled in many gaps when taking dozens of classes in the college. For example, I did all my previous programming in MS-DOS and UNIX workstations or parallel clusters were not commonly available to individuals at the time.
Even if self learning is the solution, you first need to convince recruiters of all the major employers to accept folks without a degree.
I do believe that C.Sci degrees are ridiculously overpriced and can be completed 100% online, but still with qualified instructors, teamwork and scholarships for those who can not otherwise find money or non-work time.
But he glares over the even more obvious - not everyone *wants* to learn to code, it just doesn't appeal to everyone, nor should it. No one will ever have aptitude for something they have no genuine interest in, and it really is ok for different people to be good at different things.
In my experience, self trained programmers can be very proficient in their own way. But usually when working strictly on their own code.
The problem comes in working in groups. When that happens, then issues of structure, and standards, take on greater importance.
Again, just my experience.
Highly successful and talented artists need little training.
And yet, a much larger population of graphic designers does.
It's really the difference between skill and talent. Most jobs need someone with skill to perform a task. Most jobs do not require a John Carmack and indeed John Carmack would find most programming jobs to be the very definition of hell.
"Hey John, we need a new tax total on the web page. It's going to require about 8 hours of coding, 24 hours of testing, and then 6 meetings, 8 forms, a code review, unit tests, and you need to work over christmas to install it when the users are not using the web page."
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
i dont se the difference between this and any other occupation. If you have an interest and good learning skills you can make it ibn to any occupation without any formal education. me myself have an eee degree but worked in construction, sales and a couple of other occupations witch i dont have an degree in. started at the bottom and worked my way up. Any decent company will recognize a good employee and see heir potential.
Now this is where formal education has a place. Anyone with the necessary abstract reasoning abilities and problem-solving intuition, etc... can become a self taught programmer. Formal education can help foster those skills in students that may have less aptitude in those areas.
There are 10 Types of People.
(The ones that understand the above sentence and the ones that don't.)
Anyone with access to the internet can learn to code if they have the aptitude for it.
Anyone with access to the internet can install Linux if they have the aptitude for it.
distrowatch.com
Ubuntu and Redhat/Fedora are the Microsoft wannabe's. The rest are great.
The average balance of outstanding student loan debt for households with some debt was $25,700. The median debt was $13,000, and seventy-five percent of borrowers had less than $29,000. These burdens are relatively modest given the annual earnings of these households. The average annual wage earnings among this population was $71,700.
There are certain basics you have to know. The difference between a variable and its value for instance. Assignment vs. Comparsion. Conditions, arrays etc. How to format your code and how to break down a problem into comments, terms and eventually code.
Everyone can understand these things. The problem is: If you haven't understood these, no education whatsoever will get you anywhere near programming. If you don't know what the tab-key and the clipboard are and how and when to use them you will fail at the most basic things.
People today don't learn the fundamentals of computing, thats the real problem. No amount of academic education will fix that, if the fundamentals aren't grasped.
We suffer more in our imagination than in reality. - Seneca
One or two really good ones might stick at it.
The whole everyone can code thing is probably a reaction to the majority of shockingly bad programmers out there, and the powers that be are desperate to find actual talent any way they can.
Uh there's a reason I didn't try out for the football team, and likewise, a reason why the jocks didn't log into my BBS during high school....
At least to anybody that can write good code and has tried to teach others. From my experience, you can give people a few pointers, tell them when to start and how to avoid obvious pitfalls. They then neatly sort themselves in people that get it and ones that do not. From my experience, about half of CS undergraduates do _not_ get it. Which makes me suspect that in the general population, less than 10% can learn to code well.
One reason why coding is essentially self-taught in those that can do it well is that it is so extremely difficult that without doing it in your personal style, you do not stand a chance.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Maths and CS are not properly. You don't start with "Hello World" printing Basically, a problem, it's analysis, what have to be assumed (leading to multiple different solutions), translating the human problem solving into coding and data structure and these components have to be slowly introduced brick by brick. Text book writers (most contract writers) do not teach and assume the way they understand is the way every one will understand and the teachers (without working in industry and learning the practical details) , badly written text books for getting tenure and the array of problems clog the learning processes. Of course one needs to have aptitude and attitude to learn not just get a name sake CS degree.
See subject: I've mentioned that on /. before - I absolutely LOVED that course, & 1 time, I wasted 3/4 of a test on 1 proof that I even stayed after class + into a study hall period (which my teacher let me do) to finish it... so, grading day came, & the teacher marked me wrong. I waited till the END of the class to ask why it was wrong & we stepped thru it (after I asked he humor me we do so) - he brought in the math dept. head/chair & they BOTH agreed I had "proofed the proof" solving it a different way... pretty cool I felt.
I ended up becoming a computer programmer professionally 1994-2008 (semi-retired now into a different line of business of my own altogether really now) but I will always feel that the ability to solve geometry proofs is a PRETTY GOOD INDICATOR of whether you'll like solving problems in programming!
APK
P.S.=> So, in the end? Agreed, 110% here - 'great minds think alike'... apk
As I've gotten older (started BASIC with a Timex/Sinclair XZ81, do NoSQL engine design for a living now), I've come to believe that the population split is true; there is a segment that has the aptitude to code, and the rest who don't.
The easiest way to see this aptitidue is to look and see whether someone loves to code. Just loves it. Works late because they have their teeth into a problem, holds incredibly complex systems in their head comfortably, etc. LOVES to code. Who feels, to paraphrase The Wind in the Willows: "There is nothing-- absolutely nothing-- half so much worth doing as simply messing about in code."
You rarely find crappy software folks who enjoy puttering about in the code. You often find crappy devs who got into it for the high salary.
-- "Vote Democrat. Because the current crop of conservatives are just bugnut crazy."
It seems a lot of people are confusing the three, as they are not the same. All three write software. One will write software for business companies, design websites, your (no offense) mundane software. One writes large-scale software, using professional means to accomplish this in the most efficient, and sound manner. One designs algorithms for new problems and proves them correct, proves a network protocol secure/correct, writes/designs new languages and compilers, works on AI, and all the high-level abstract problems.
One is not better than the other (one is obviously more difficult than the others) and all are needed.
I only hear that we need women coders.
During my CS Associates Degree work - we used MASM 5.0, Borland Turbo C++ 3.1, & Borland Turbo Pascal 5.0 - doing single unit (.pas) programs (.c & .h in C/C++)...
Then "projects" in C++ came & I said "WTF What are ALL of these files & why won't the .c one compile fully?"
Hence colliding with projects for the 1st time in an OOP language!
Which lent itself to object frameworks & RAD development tools (my 1st being VB & later one that has been my fav. ever since, Delphi) to create Windows apps FAST!
(Way faster than using resources studios & binding controls to function + procedure interfaces events the OLD stodgy manual way passing object references to them - before that, it was a huge 'framework' to build a primitive Win3.x style window as I saw guys who'd been @ it longer than me THEN doing).
* Too bad you never used Delphi -> http://www.embarcadero.com/pro...
(It, like VB before it, made GUI construction a snap & then the Object.Property & method that acts on it takes over - building apps is designing your interface for functionality FIRST then double-clicking each control finding the event you want to program for it (e.g. click, doubleclick etc.)).
At 1st it seems like a HUGE hurdle (it is) but you take to it like a fish to water W/ THE RIGHT TOOLS FOR IT THAT MAKE IT EASIER (got nicer around 1993 on that way for Win16/32 devs).
APK
P.S.=> You'd have liked it probably, I know I do!
Oh, here & there I'll write up a console-mode/tty term/DOS style app (I write them to be fast, pretty doesn't matter, & usually to process data for say, filters, fast from lists I import online that I build into programs hardcoded (faster than listbox loads for example) like this built in Delphi -> APK Hosts File Engine 9.0++ SR-4 32/64-bit http://start64.com/index.php?o...
I wrote 7 small "dos type" apps to build that faster (for making false positives filters & removing bloating junk in hosts datasources have (comments))... apk
these anti-formal-education people are getting to be just as bad as fox news with their made up statistics:
"the majority of successful programmers are self taught" is complete bullshit. successful self taught programmers are the exception, not the rule.
If 30-60% of the freshman are failing a class, your education institution is broken. (Unless you think wasting that much time is worthwhile).
Teaching requires training, too. And, since most schools hire for credentials in programming, and require minimal, if any, coursework in teaching, you get really bad teachers - who then blame it on their students.
Of course the only good programmers are self taught, much of the coursework and curricula are junk.
Hundreds of post from programmers to each other telling themselves how 'lite they are. Golly, what a surprise.
What's wrong with "everyone should learn how"?
This is not about encouraging unsuitable people into programming but about widening the pool - reaching those who would never consider programming as a career because they don't have a computer or no-one in their family has ever worked in an office or they don't know where to start and just need a little help to get going or they have a logical mind but don't know what programming is or think programming is for weirdoes.
I know some really good self-taught programmers but many of them suffer from shortcomings due to not understanding the underlying mechanics.
Using arrays when hashes would be better and things like that.
LK
"Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
Didn't need a CS education to learn *that*.
In my opinion, CS is about the easiest of the technical topics to learn from books and via direct work with computers.
See, computers are *designed* by humans. At some level, they *make sense* because they're a man-made creation. Algorithms designed by someone else are similar, they make sense. Computer languages are also of human design, and are made to make sense.
Designing *new* algorithms that aren't derivative of already-invented ones, *that* is hard, but there's not much need of that for most programmers.
Quantum mechanics? That's *hard*. That's the type of thing that a university education is useful to me for. It makes no damn sense at all. All the physical sciences are what they are, and they're not of human invention and are often not terribly intuitive.
I used my time at the University, for the most part, to learn stuff that I couldn't readily teach myself.
These co-workers of yours? They didn't need a university education. They needed to have read a few books!
--PM
Beyond arithmetic most people find all the math that they learn in school to be pointless; something a hair more useful than trivia. It's on the reasons why they're so frustrated with it. Sure a teacher could tell them about some sort advanced scientific calculation which will need it, but that's so far out of the realm of what they imagine themselves doing, it just adds to the frustration.
But if some math classes were converted into programming classes, sure lots of students still wouldn't like it, but I imagine it'll be less frustrating, because they can at least see how it's being applied. Programming has a purposes, and they see the math being applied in the programming.
programming to make money. And they suck at it. A few people do it because they love it. And those are the ones that are good.
Real adults eventually move past Atlas Shrugged when they gain enough life experience to know that nothing in the book resembles anything in the real world, nor the characters anything like real people.
Not everyone is good at math, but we still teach it. Not everyone is good at science, but basic science courses are still required curriculum. The students who do well in those courses often find a career in them, but they might never have known that they would be good at something like this until they try. It's important for schools to introduce kids to programming if for no other reason than to identify those who might have further interest in the study.
I can only give anecdotal data, but the good programmers in my environment, friends and (former) colleagues, all got into programming on their own initiative, mostly during secondary school. I learned BASIC age 12. Then we all got a degree: CS, Math, Engineering, Physics. I know one good programmer who had his first programming experience at uni, but he was studying languages, so it was also not part of a course.
I'm in a weird situation: I teach programming to people who need it but wish they didn't. They're PhD students from life and social sciences. They nowadays have so much data that they need to program, but most of them don't really want to. They find it hard and it takes up too much of their time. The biggest mistakes I find is that their code is terribly organized. They don't plan ahead, they don't break down the problem, they don't think about code re-use, they seem to fight the process of coding rather than learn it. It's as though they don't understand what it's for (even though they have access to a lot of good example code. They seem to ignore it). They're making progress, but it's slow. Learning the language isn't their biggest problem: learning how to use it is.
soylentnews.org
The barrier to entry is right in front of your eyes, man !
The biggest barrier to entry is "self taught" - ie., those who are incapable of (or won't) self-taught simply does not have the tenacity to make it in this field
IT, unlike many other profession, does not offer much pf the 'hand-holding sessions' simply because the approach to solve a particular problem by person A might not make any sense to individual B
I am a teacher. I teach computer science. I think that the point of the 'teach everyone to code' idea is that we need to expose students to options. Yes, I agree with the original comment, you CAN teach yourself to program, like you CAN teach yourself to do a great many things, but you won't if you didn't even know it existed as an option. For a kid growing up in a house without a computer they have to be exposed to programming to see if they enjoy/have an aptitude for it. I don't think anyone is expecting every child to become a top class scientist, mathemetician or linguist, but we expose them to those subjects so they can live in the world around them. Some of them will be Sagan, Einstein or Tolkien, but lots will just be able to read and write for pleasure, not get short changed at the supermarket or understand their tax return. I think the point is that understanding a basic bit of code/computer science is becoming essential to life - it's not totally about expecting people to become programmers, but expecting people to have to deal with programs.
Because most people who apply just want to get shit done and get money. Yes they call it a shit. Programmers at heart are logical artists, but majority of people are a-holes.
However, in a work situation where productivity is more the goal, you should do things as efficiently as possible MOST of the time.
And that means leveraging the best of what's known.
I've been aggravated a great deal by one of my co-workers who WOULD NOT use data analysis scripts developed by others, more or less because he didn't write them and "didn't understand them" and "wanted to learn". Basically, "not invented by me."
I told him to USE the work that's already been done and focus on developing NEW tools that we don't already have and/or improve the existing stuff. These could be his learning examples (and yes, there were plenty of things to do that were easy enough to be learning examples.) Stand on others' shoulders so that you can climb higher. Develop new work so that others can stand on your shoulders!
There's a time and a place to struggle learning the already-invented, for pedagogical purposes, but in a productivity environment, you leverage the best of human knowledge to get the job done as fast and well as possible.
You don't waste your time and genius re-inventing the wheel, you develop NEW things. You also don't waste your co-worker's time and genius re-doing what they've done. It detracts from their productivity (because helping you makes them more productive) and disrespects their accomplishments.
And it really drove me batty that the stuff this guy re-wrote was inferior to what others had already done.
--PM
Not all people who take programming courses need to become professional programmers. What's next an investigation on the fact that most people who take English classes don't become professional writers, or everyone who takes math doesn't become a mathematician.
Talk about missing the point.
People shouldn't be illiterate or innumerate, or illogical.
Taking classes doesn't guarantee facility with something, but it does improve the odds.
for a hundred years, statisticians have been teaching a wide range of students the null hypothesis and p values and so on
and it is clear that a wide range of people pass the course and don't understand statistics
you would think, that after 100 years, the statisticians would say, hey, it ain't workin, lets try something new, like stat without the null hypothesis
same thing with programming: maybe we need a radical re think of how programming languages work
of course, both solutions would lower the salary of the teachers, so no change is foreseen
ps yes, there is some programming where you have to know elliptical bessels or something, but that is a tiny minority of code
See subject & my last post you replied to - you'll find it there (as an example of a Win32/64 GUI program I did that has several DOS type/charactermode/tty term apps I did for it to build it faster on rebuilds).
APK
P.S.=> "Onwards & UPWARDS"... apk
Many of the arguments made here could easily apply to math education. However the math education debate concluded circa 1500. Math / programming are high aptitude tasks, however the solution is not to take them out of education. The underlying problem is that more and more students are being socially promoted through lower education. These same students hit college with the idea that they are entitled to whatever degree they want. Rather than rallying against Yvette Cooper, the 'year of code' or 'hour of code' people, we should be rallying against the local principles / head masters who say things like "Just pass him. He tries hard and he is so good at football."
However I do agree that the rhetoric saying, 'Coding is easy' is extremely unfortunate. Coding is not easy, and for that matter neither is math. Coding is worth while and as with everything that is worthwhile, coding is not easy.
If someone has aptitude and the will to code, can we stop them? Won't they naturally be drawn to it? If not, all the education in the world won't matter. Cheap laptop + Python = learning to write software.
From what I've read recently, it's not exactly true that the majority of programmers is self-taught. It's high, but not over 50%.
Our recently-completed, federally-funded project to help all small businesses get online seems to support the conclusion here. No real coding involved, but enough similarities to be relevant.
We provided free-as-the-air, ecommerce-capable, responsive websites, based on a vastly simplified WordPress framework, to a sector of businesses struggling in our state. We had a few takers, but it was basically a complete fail.
Why?
- Too steep a learning curve (We'd offer quick tutorials on logging in, the difference between posts and Pages, and... lost them right there).
- Further, too costly in terms of time and effort.
If we were to redesign, we'd have to make it simpler then Facebook, which is still too complicated for almost anyone to write a good post on. The notion that "everyone" can code is ludicrous.
Anyone without the aptitude to code can be turned into "Soylent Green". Now, all the 1) remaining programmers can have an 2) endless supply of food!
Self-importance and self-indulgence is the root of ALL evil.
I think that this has to do with the perspective of 'lower tier' programmers. First of all, I want to point out that this isn't meant pejoratively. I don't have a degree and have been developing for >15 years. What I mean by this is there is a large market and need for people to develop for small businesses, usually on typical business workflows. I would suggest that many of the degreed people that work in this market may not be as motivated or talented as the ones that go on to work for wall street, silicon valley or in critical roles at a large company(lets call this first tier). For guys like me that grew up in a lower middle class family, making ~six figures with no degree working the lower tier sounds like a pretty good proposition. So perhaps some are seeing things from under the glass ceiling.....
love is just extroverted narcissism
I agree completely with the author. However one of the biggest challenges is that formal education runs on a time table which some people simply need more time in certain areas. However when involved with formal education you cannot simply put a class on hold for a single person. So the person who does need more time will never get it, especially if they're going for a 4 year degree. It's funny how the educated forget how the human mind can take time to grow when learning something new.
You don't need to learn programming in order to use a computer. That may have been true 30-40 years ago but is no longer the case. As a career, it turned out to be a terrible choice. Back in the '80s lots of people thought programming would be the job of the future. Those were the days of the star programmers, especially in the gaming industry. But things changed. Now, being a programmer is worse than being a garbage hauler, and I mean someone who has to carry leaking, torn open garbage bags by hand. It's that bad, and it's becoming worse. It's thankless, boring, repetitive, and the worst thing about it are the people who actually kid themselves into thinking they have it great: those who work 24/7 and will be grateful for pizza after hours. They're literally working themselves off for scrapes of food, yet they hang on because they know they're hopeless basket cases with no social skills and Out There they would be lost. In a couple of years they will be made redundant and thrown into the streets and they will snap, I tell you. Leave computers to chumps and move to management. It's only a job, it's not your life.
Furthermore to be useful you can't just be a great programmer, you need to understand one or more problem spaces at an advanced level so that you are able to apply your skills to encoding solutions, otherwise you are like a poet with nothing to say.
Speaking as someone with an engineering education (electrical), you see this sort of thing in plenty of other fields.
There are individuals who could easily teach themselves nearly any vocation given accessible resources. Many of my engineering classmates came out with a degree but little ability, meanwhile there are plenty of people showcased across cyberspace who demonstrate impressive engineering talent with no formal education.
It's been this way since the dawn of time. Heck, some of our most important medical advances came from mavericks who simply had an interest in the subject, and that's arguably the least accessible field of all.
You probably see more of this in software development than other fields simply because the resources are more accessible, and this is likely true because the field itself is largely focused on making information accessible in the most user friendly way possible.
This is the truth which so many miss. You are always learning if you want to progress at all.
Software Developers should be learning new skills from the day they start their first job. Those who don't will find themselves constantly junior and at risk of losing their jobs to cheaper employees.
Formal education only takes you so far, and the main aim should not be to spit out a fully formed programmer, but to give people the tools and confidence to continue learning.
So, at school, lets teach children not to be afraid of tinkering with computers, that anyone can do it if they are interested.
I've seen some really dysfunctional large company IT departments.
They collect dead wood like nobodies business. Small business would send them walking in weeks.
In my experience the divide is more between, 'software is overhead' and 'software is our bread and butter'. No matter what the size, if software is overhead the departments suck (and suck to work for).
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
See subject: It's a good scripting language, no questions asked, but can you do things that other more "full-blown" tools can? E.G. - Device drivers??
* What I don't like seeing is the advent of the "cut & paste code from others' work" coder due to places like StackOverflow + Open 'SORES' - that's NOT coding - that's plagiarism, & doesn't teach what formal education does (saves you tons of time reinventing wheels or solving problems that were solved, usually efficiently, years to decades ago)... far from it.
(That crap doesn't give one the understanding it takes to really solve problems due to knowing what's going on algorithmically, & perhaps just as importantly, knowing your OS + networking & hardware also - they help solving issues also!)
APK
P.S.=> Python's exactly what you called it - a good 'handyman's' tool - but there's a LOT you can't do with it as opposed to say C/C++ &/or Delphi for example... apk
Also, having a course function as a weed-out class is a function of grading. A friend of mine is taking a CS course where the language of choice is Python. The tests are 75% of the grade, they are on unruled paper, and you can lose enough points on style to fail the test, and it is not on a curve. And of course Python is the language where whitespace is syntactically significant. The style guide is also whatever the professor/TAs want it to be.
Artificial tests in an artificial environment with deadlines and stresses that are not typically found in the real world, and above all programming on paper, sounds like a shit way to determine whether someone can program. CS/Programming is not that hard. It's like being a chef -- yeah, probably not everyone is going to have their own restaurant chain, but that shouldn't stop anyone from cooking, or even graduating from a culinary school. Anyone teaching programming/CS as a weed-out course has their head firmly crammed up their own ass. There's no reason to do so, and you're probably not testing actual aptitude for the subject.
Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.