Programming Education: Selling People a Lie? (blogspot.com) 397
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."
Logic versus programming (Score:5, Interesting)
Re: (Score:2)
Re: (Score:3, Insightful)
You realise that logic teaching of various kinds predates programming by millenia, right?
Re: (Score:2)
Re:Logic versus programming (Score:5, Interesting)
I think the whole term "learn programming" leads people to think in the wrong direction. One semester should be enough for a person to learn the "basics of programming". If they can't get the basics down in that time, they're never going to. Most of the time spent on programming education needs to be not on basics or learning languages, but on getting your future-programmers to avoid the giant list of common pitfalls that programmers make in every field of programming. Teach them O(N) notation. Teach them data structures. Teach them of buffer overflow. Teach them of injection. Teach them how and when to optimize and to recognize what optimizations actually help versus just making the code confusing. Teach them to avoid directly overwriting important files, rather to write the data to a temporary and then move it to the ultimate destination to prevent data corruption during crashes. Teach them refactoring. Teach them threading and race conditions. Teach them the importance of server-side checks on data validity rather than just client side. Etc. Basically one should take a survey of people working professionally as programmers and ask them, "What lack of knowledge or bad programming habits have frustrated you the most about any of your coworkers, past or present?" - the most common answers should form the basis of a good programming education, along with whatever teaching about tools and principles that will increase their productivity.
I really don't have too much to complain about with how my college taught CS, although some things could have been improved. I have more of an issue with some of the maths courses that were required which really had nothing to do with programming except in very specialized fields. I actually got a lot more out of my elective math courses than I did out of my required ones.
Re: (Score:3)
Planning is programming. In a way this reflects the post. Some people plan and prepare. They can program.
I'm lousy at planning, but a pretty decent programmer. I know lots of good programmers who are bad at planning.
Re: (Score:3)
Re:Logic versus programming (Score:5, Interesting)
Re: (Score:3)
https://en.wikipedia.org/wiki/... [wikipedia.org]
Re: (Score:3)
Re: (Score:2, Interesting)
Re: (Score:2)
Re: (Score:3)
Programming isn't the only way to teach those skills to kids, but it is a rather good one and with computing becoming so ubiquitous, odds are that there's some overlap between comput
Re: (Score:2)
Might it make more sense to people to think logically and procedurally, then worry about applying that to a computer?
By the time they are in school its been drilled in this is totally unnecessary for everyday life and is likely to make you unpopular. That seems to be a fairly large chunk of this issue, as well as a host of issues in later life, when large scale and coherent rational thought escapes people.
Re:Logic versus programming (Score:5, Insightful)
The problem with teaching someone to program is that they tend to miss the part where you have to think about the problem abstractly and structure the problem properly. If you can communicate the problem effectively to other people, then you can find a programmer to code up your idea relatively easily. The aptitude problem comes from the fact that many people think learning to program is the point. Good programmers are able to communicate abstract concepts at a high level, which can't really be taught through just learning to program. Honestly, I think you learn how to program better simply by explaining what you are trying to do in plain English. The actual programming task has almost little educational value.
Students should come up with a problem they are trying to solve, conceptualize it and then explain it to their coding buddy and if their coding buddy can code it then the student probably understands how to program well.
Re: (Score:3)
Honestly, I think you learn how to program better simply by explaining what you are trying to do in plain English. The actual programming task has almost little educational value.
Technically, yes. Practically, no. What you want them to do is come up with an actual method/formula/implementation for doing it, not just the hand-waving. Like the task is to sort a stack of books. The person giving the task might not even understand that there is such a thing as sort algorithms and that the computer needs a very precise set of steps on what to do. He's just got the start and end points, now the stack is unsorted and when it's done it's sorted.
And that's maybe fine in a business setting, i
Re: (Score:3)
Re: (Score:3, Interesting)
The desired solution for any problem is always some kind of plumbing taking into account user inputs, user output, databases, system state and storage. Some people can only solve a problem if they have been taught how to handle those particular "patterns" before. Creative types can come up with a solution using either deductive analysis or by writing code as they go along.
Some projects just require someone who has read all the web page design textbooks and the patterns are fairly simple to match - create di
Re: (Score:2)
Re:Logic versus programming (Score:5, Interesting)
TFA seems to be completely missing the point. We're not teaching programming because we expect everyone to be a full-time programmer, we're teaching programming because it's an important life skill. Even if they just learn that there are some tasks that can be automated and when to ask a professional programmer to do it (and, ideally, what tasks can't easily be automated) then that's a huge win. If they can do the simple automation tasks themselves, that's even better.
How often have to seen people in admin jobs spending ages doing something in MS Office that half a dozen lines of VBA could have done in under a second? Eliminating that is the kind of productivity win that we expect to see from teaching everyone a little bit of programming. The argument makes as much sense as saying 'most people won't become novelists, we shouldn't teach English', or 'most people won't become accountants, we shouldn't teach mathematics'.
What a load of CS-degree-holding crap (Score:2, Interesting)
"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.
Re: (Score:2, Insightful)
Maybe if you're developing YAWA (yet another web application) but if you're doing something interesting it is a high aptitude task. 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. Otherwise you're a code monkey who when confronted with a problem that can't be solved by gluing some libraries from codeplex together doesn't know what the fuck to do.
I mean think about it. How i
Degree vs self-taught is a bogus comparison (Score:4, Interesting)
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.
Re: (Score:2)
In that case, you're doing it wrong.
Programming is a creative, problem-solving exercise involving predictive thinking and failure mode effects analysis. All of which are 'hard' problems in the AI sphere, so they're not about to be automated any day soon. Also, given that description, there's no wonder your average mouth-breather can't learn to program effectively. Most of them haven't had a creative thought in their entire lifetime. (doubly so for politicians like Yvette Cooper)
Re: (Score:2)
they have an app for your comment.
MBA PHB app: if I don't understand it, it must be easy & take no time.
what's your degree in ? and how long after you started working in that field did you realize you barely knew enough to start and had a lot more to learn ?
What age did you think you were a master at your craft ?
Are people still paying extra for the experience & wisdom of a master? or has offshoring/Walmart/H1B visa reached your field.
I was an IT worker & a master at my specialty. I have switc
Re: (Score:2)
For all the bad coders do: Yes. There are a few that actually solve difficult tasks that need solving. For example cleaning up the security mess these bad coders routinely create or actually do things that need to be fast and reliable. That will not be automated anytime soon.
It's not entirely a lie (Score:5, Insightful)
Programming education should try to find people who have the aptitude to be good programmers and quickly weed out those who never will.
Re: (Score:2)
Re:It's not entirely a lie (Score:5, Insightful)
Well, I don't know whether it's inborn, although if sometimes seems this way. But without taking a position on whether programmers are born or made, there are skills and habits involved with being a good programmer that would be useful to anyone. That said, however, I'm not convinced that these skills and habits are what the programming education movement is teaching. I am convinced that coding isn't the only way to gain those things.
What a really skillful programmer does that special is transform problems from something it isn't clear how to solve into other problems that are readily solvable. That takes a peculiar mix of discipline and imagination which simply teaching coding per se will not foster.
Re: (Score:2, Insightful)
Almost anyone can become a competent programmer. They need the right teaching and opportunity, but it's definitely something that can be learned.
A lot of complex programming tasks are less about software engineering and more about knowledge of the application. Business knowledge, systems knowledge, that sort of thing. Stuff that can be learned.
The ability to learn is the real key to it.
Re: (Score:2)
Almost anyone can become a competent programmer. They need the right teaching and opportunity, but it's definitely something that can be learned.
A lot of complex programming tasks are less about software engineering and more about knowledge of the application. Business knowledge, systems knowledge, that sort of thing. Stuff that can be learned.
The ability to learn is the real key to it.
Well, while I mostly agree with what you're saying, I think a lot depends on what your standard of "competence" is.
Suppose the standard is this: take a clearly defined task and code a solution in a reasonably acceptable style using the first approach that pops into your head. Well, anyone of average intelligence could be trained to do that, and I think this the kind of conception of competence that a lot of HR departments use. That's why they like certifications; certifications measure exactly this kind o
Re: (Score:2)
Well, I don't know whether it's inborn, although if sometimes seems this way. But without taking a position on whether programmers are born or made
This says no [retractionwatch.com]. In short, if you claim it is inborn, you need to be able to make a test that distinguishes between those who "have it" and those who "don't have it." Alan Kay has good things to say, too [secretgeek.net] as usual.
Re:It's not entirely a lie (Score:5, Interesting)
Programming education should try to find people who have the aptitude to be good programmers and quickly weed out those who never will.
I had a professor in college who would actively and zealously apply this principle. His class was the one gateway class in all of the computer science department - if you couldn't pass his class, you couldn't get a CS degree period. When I was an undergraduate I remember his class being a lot of work but surprisingly engaging and with interestingly tricky problems to solve. When I was a graduate student I got to see behind the veil a bit and he explained how those tricky problems would separate out the folks that shouldn't have been in the class in the first place. I always thought that was kind of cool, that he cared about the state of the field that much to not want people who shouldn't have a CS degree to get one.
Re: (Score:3)
The weed out programs worked well when you could drop a class an hour before the final exam but universities decided that wasn't a good idea for some reason so now there is an enormous stress on students to follow their course even if the weed out course said they shouldn't be in that field at all. Oddly enough these changes seemed to have come from the accreditation side of the teaching business yet mecreases the vaule of degrees.
My take is only about 1 in 100 people will ever understand how the machines
ahem (Score:5, Insightful)
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.
Cut the fat. (Score:5, Insightful)
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'...
Re: (Score:2)
Re: (Score:2)
I've been in IT for all my working live without ever having attended a software class, I majored in physics, coding was just something you were expected to pick up.
But I also always had a passion for history. Even as a teenage student I could have explained to Ronald Reagan (who I adored at the time) why giving Stinger missiles to Islamic warlords was a really bad idea.
Maybe we should teach history to all students just on the off chance that one of them becomes president?
Re: (Score:2)
Mod parent up!
Re: (Score:2)
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'...
Nice impersonation of Corporate America you're doing right there; that's my read on the exact thing they'd like to see: 100% privatization of education from kindergarted on up, turning the whole process into just a lengthy trade school, to produce the workers they want -- and that never learn anything else.
Re: (Score:2)
You're stumbling into enlightenment without quite knowing it. The history curriculum in schools is not pushed by politicians or exploitive corporations as some sort of training for a career as a historian. There's no false claims of "shortages" of historians.
There's a ridiculous idea that by forcing everyone to "learn programming" (which means different things to different people) they will somehow gain proficiency wit
Geometry (Score:5, Interesting)
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.
Re: (Score:2)
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.
Oh, I don't know, you could probably get an injection of midichlori... *whack* *augh!* *pow* *No, I was just joking* *punch* *aiiiiiiii* (flees from mob of angry "Episodes IV-VI fans.)
Re: (Score:2)
My grade 10 math was exactly the same: Geometry and Proofs. I always felt it helped me with the thought process for programming.
My high school had a grade 11 course in programming (cards going into an IBM 1150) and the a language called "MLS" ("Machine Language Simulator"). The teacher was an alcoholic who really didn't care whether or not you did anything, so most of the other students were there as an easy credit and you could get banners printed by filling out your cards as each line making a line of t
Re: (Score:2)
Language is usually fairly irrelevant. It's like if I wanted to write an essay on the nature of monkeys (which I don't know much about) in Esperanto (which I don't know at all). I could learn the characters and grammar of Esperanto, which is apparently not super difficult, but that wouldn't teach me anything about monkeys or how to structure essays about them.
the majority of those who are successful ...... (Score:3)
Doctors are no different (Score:3)
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.
Doctors (Score:2)
Re: (Score:3)
If you fuck up as a doctor, people die.
Yes, the do. For example, in Switzerland it is estimated that health care errors cause 1,000-plus deaths a year. [thelocal.ch]
Dual major (Score:2)
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 hal
Aptitude, Ability and Desire (Score:4, Insightful)
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.
Re: (Score:2)
Emotions aren't logical.
It is why certain politicians use emotional strings to garner votes. "Do it for the Children", "Right Wing Extremist", "Hater".
Making art is easy (Score:2)
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 pro
Re: (Score:2)
That's not always the case [dilbert.com], though.
Not all coding requires the same skill set (Score:3)
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.
Re: (Score:2)
Pointer arithmetic? Seriously? I taught myself how to do that way before I started my CS studies.
Re: (Score:2)
t. However I would bet that there are certain types of projects that are mostly handled by people with formal training.
The stereotypical answers are creating a regular expression parser and a compiler. Hard to do those without a lot of CS theory.
Also knowing about Big-Oh is really helpful in a lot of areas of programming.
Let's agree to agree and disagree. (Score:3)
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.
Re: (Score:2)
Re: (Score:2)
Why do we all insist on learning things for professional gain, rather than for fun?
Big parts of the US college / higher ed sytems is (Score:2)
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
Re: (Score:2)
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.
CS Education (Score:3)
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.
The title is lying (Score:4, Informative)
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 [stackoverflow.com], 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.
You can't fix stupid (Score:2)
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
Re: (Score:2)
"obvious conclusion: there are 10 populations" (Score:2)
you know the rest
How the Scam Works (Score:2)
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.
Woah, I don't even know where to start (Score:2)
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 responsib
learning skills or abstract reasoning, etc...? (Score:2)
Types of People (Score:2)
(The ones that understand the above sentence and the ones that don't.)
I disagree. (Score:2)
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 m
This is rather obvious (Score:2)
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 th
Love... (Score:4, Insightful)
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.
How about as a motivation to learn math (Score:2)
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 i
I teach students who need, but don't like like it (Score:3)
Re:One door it does open for the failures: (Score:4, Insightful)
Those who can do, those who can't manage?
Re: One door it does open for the failures: (Score:2)
Depends on the kind of agile. (a) an excuse do not document and hack around delivering a broken product. Or (b) an iterative development approach.
For option (a) a person unable to code would not be a problem. However, (b) requires someone who can estimate effort, which requires an experiend developer and engineer.
Re: (Score:3)
Agile/Scrum == hot potato (Score:5, Insightful)
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.
Re:Agile/Scrum == hot potato (Score:4, Insightful)
Effectively, the person who is getting the least work done is the one to be promoted to management or fired. That leads to an arms race where programmers start working until the late hours of the morning to make sure they are not the one completing the least number of tasks.
Re:Agile/Scrum == hot potato (Score:5, Informative)
REALLY bad advice. Unemployment for law school grads is >15% and climbing fast. 2 out of 3 are not working in the profession of law at all. Meanwhile developers are in huge demand, and no one is offshoring anything interesting.
Re: (Score:2)
Re: (Score:2, Insightful)
I personally recommend people go law, accounting, or a trade
Brilliant idea: let's continue down the road of We Don't Make Anything In America and towards the dead-end town of ServiceEconomyville, which is smack-dab in the middle of Thirdworldistan. By the year 2100 the Chinese will be importing American workers to give them mani-pedis and pick their lettuce, while here in the former United States we'll have underage workers working 18 hour days assembling smartphones for the South Koreans and Vietnamese to buy.
Re: (Score:2, Interesting)
Agree 100% after nearly 15 years in IT as a professional and many years programming as a child I got out of IT the day the DBA googled the phrase "cartesian join" just after I mentioned it. I'm now a tradie after mentally taking my work home most nights and the personal time required to keep up to date with languages, algorithms, methodologies, different technologies and on and on and on I'm so glad I made the transition.
I'm so glad that now the only thing I take home are my dirty hands and the skills set t
Re: (Score:2)
You cannot offshore a plumber, electrician
That's what robots are for.
Re:Agile/Scrum == hot potato (Score:5, Interesting)
Sadly I think this is way too true. What are people going to do when robots can build a house or a bridge? Or when everything else turns robotic, like cars. What are people going to do? The reality is that we will have to move to a world without money because no one will be able to make any. Only those at the top will have a source of income, ownership of the automation.
Reading that last sentence I wonder if Marx wasn't somewhat right. Those that own the means of production are going to end up with all of the power.
Re: (Score:2)
Re: (Score:2)
I personally recommend people go law, accounting, or a trade. You cannot offshore ...
Actually - an accounting firm in my town off-shores the majority of their accounting work to offices that they set up in India.
I can see certain legal tasks (drafting legal documents, etc) also going offshore as soon as some senior partner at a law firm figures out that they will save money by doing so.
Re:Egalitarianism (Score:5, Informative)
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."
Re: (Score:2)
Well, you have now. Pleasure to meet you. I've been doing this since 1996, straight out of high-school, and I haven't stopped. I did actually spend three semesters in community college as an English major, but I dropped out when the .com boom hit me to work for a forward thinking consulting startup. The rest, as they say is history. I now posses master level proficiency in 25 programming languages, and I'm writing a book on language theory, and hotel rooms, and hookers. It's going to be a good read. Anyway,
Re: (Score:2, Interesting)
I've met people like you before. I have found those like you lack severely in one area (probably some of you don't)
I left work one day and came in the next day to find a bunch of guys, like you, still at work from the night before. They were excited because they came up with a speed up for their software. They implemented a rebalancing binary tree, but invented it themselves on the fly (Years ago before there were a lot of libraries that did this). They were so excited and explained it to me in great de
Re: (Score:3)
Red and black binary trees are fucking awesome!
Now, to be fair, I'm not entirely self taught anymore... if I ever was.
I've spent the better part of a decade and a half taking formal classes and working with mentors. I've even gone out of my way to work at companies where famous and semi-famous programmers work, in an effort to meet them and suck the wisdom out of their brains with a straw. By the way, if you're interested, that doesn't usually go over well. But most of the time, they're gracious enough to a
I learned red-black trees from a book (Score:2)
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 the
Re: (Score:2)
But what a degree does give you is a jump start. You still have to have an aptitude for programming either way, but a degree can expose you to a lot of the pitfalls that you otherwise would f
Re: (Score:2)
Hard to say what would happen today. I've found that in order to survive in the industry, you have to be somewhere on the spectrum between formal scientist and snake oil salesman. If you're comfortable enough in your own skin, and you're arrogant enough to try in the first place... I think it could still be done. The best route there, in case there are any young programmers reading would be to shoot for nonprofits and small consulting outfits. The work sucks, the hours are long, management is usually dishon
Re: (Score:2)
Some folks might be excellent programmers but terrible communicators or have the misfortune of being poorly managed.
"Learning to code" left as exercise for student (Score:2)
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 le
Re: (Score:2)
HR: OK, we have all the paperwork done. I see you never graduated.
Me: Yes, I have a degree in electrical engineering
HR: OK, that me we can offer you more money
Me: OK
I wouldn't have risked it, but I'm con
Re: (Score:2)
From personal observations on a lot of CS students, that is completely wrong. Quite a few highly motivated CS students fail to ever become good coders. They have the motivation but lack the aptitude.