Can Anyone Become a Programmer?
another random user writes "A Q&A on Ars Technica asks about an old adage that many programmers stick to: 'It takes a certain type of mind to learn programming, and not everyone can do it.' Users at Stack Exchange are wading in with their answers, but what do Slashdot users think?"
No
Some people do not have the logical thinking skills that are required to be a successful programmer.
I've had this conversation in many different formats over the years, and I keep coming back to the peculiar nature of programming, or at least good programming. There is no doubt that technical background or training is highly desirable, but there is also an intuitive aspect that makes it more than just fitting blocks together. Given the right tools, I think anyone can code, but programming beyond basic HTML form processing or Excel macros takes something more.
The world's burning. Moped Jesus spotted on I50. Details at 11.
Programming (a.k.a. Coding) has many levels, but yes, most people are able to handle the logic necessary and can acquire the skills in time.
Development is another level which many programmers either don't attain or are not willing to go to, but it is a step that makes a big difference in the code produced.
Unfortunately, the terms seem to be used interchangeably, thus diluting the developer's value and putting expectations on programmers that they cannot live up to.
If you don't enjoy something, then usually you don't have motivation to learn and perfect the art. Perhaps anyone can be a satisfactory opera singer with enough training, but that doesn't mean they WANT to be an opera singer.
It's also true some pick up on programming and learning new languages faster. While anybody can probably learn with enough practice, it may not make economic sense to you and the company to take a long time to get into the flow of things. Possible, yes. Practical, no.
Table-ized A.I.
the only answers you will find in this thread will answer a different question:
"what prejudicial preconceptions of yours about the field of programming tweaks your ego?"
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
I've never had much aptitude for programming. The "programming" (code editing) I do is pretty chunky. I can look at a block of code, go find another example, somewhat understand what THAT block of code is doing and perhaps with a bit of trial and error, come up with the right thing to do. I don't understand the fundamentals. I remember being exposed to programming in earlier years and I just didn't get it. I didn't foresee myself needing it. Maybe if I'd have paid more attention to the preliminary exercises... I don't know, it just seemed pointless because it didn't make sense to me.
So basically, without examples, I'm fucked.
Being into computers since 1990, I had thought coding may be a career. In 1999, my first shot at college, and coding, I came to see it was not for me.
I aced the C Programming course, but it wasn't the technicalities of the language that repelled me... it was the environment.
I realized a day's work of coding meant sitting in one spot, staring at chars/text, thinking, and then more of the same. Even the 2-3 hours of coding "lab" was absurd, to me. I was NOT ok with this style of work.
I realized the CS path was clearly for someone else and moved on.
I think it requires a certain level of intelligence as a minimum. Nothing incredibly special but above average and an interest in learning how to control that box. Interest can drive aptitude. But a low IQ is going to hamper working in, say, C. Object-oriented and the workings of inheritance in C++ are going to be hard to work with if you're plain dumb.
Documentation for libraries is not infrequently poor or even wrong and there seems to be some tacit assumption that programmers will work out how things work anyway, even if that just means knowing where to get help.
And it depends what you call "programming". If that includes designing solutions to complex or novel (hence no off-the-shelf libraries) solutions, then you have to design complex algorithms, which requires creativity. You need to be able to evaluate and select the right solution, too, something even very smart programmers get wrong.
I think a distinction should be made between a programmer and a *good* programmer. My CS program had a number of *really* smart kids - 1600 SAT scores and the like - but many of them really struggled at the concepts and barely made it through the curriculum. I think a good programmer takes 1. Creativity to think about problems from different angles 2. Drive to hunker down and get through hard problems (be it starting a new language, that pesky compile error, starting a large project from scratch). 3. I'm sure fellow slashdotters can think of many more
Your whole post left my mouth agape. The standpoint that you are coming from, all programming can be simplified into dragging and dropping visual widgets and throwing in a bit of high-level platform code to tie it all together. If that is your view of what programming is, no wonder you think it isn't special. You aren't always programming on Windows. You don't always have desktop-sized amounts of memory. Sometimes YOU need to write one of those libraries that are NOT "already coded".
And no, an astronaut doesn't just "drive the shuttle"
"When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
Your whole post left my mouth agape.
It's called "trolling"...
No sig today...
Anyone can become a programmer, just like anyone can become a painter.
It does not mean that the person would be a good programmer though. I could be an artists, but I would not be a good painter if my life dependent on it.
Your whole post left my mouth agape. The standpoint that you are coming from, all programming can be simplified into dragging and dropping visual widgets and throwing in a bit of high-level platform code to tie it all together. If that is your view of what programming is, no wonder you think it isn't special. You aren't always programming on Windows. You don't always have desktop-sized amounts of memory. Sometimes YOU need to write one of those libraries that are NOT "already coded". And no, an astronaut doesn't just "drive the shuttle"
You have to keep in mind, the post seems to have come from a designer. It just sounds like a lot of sour grapes to me.
You must have a very interesting job. I think I've designed an actual algorithm once a year, on average.
The rest is mindless factory work.
Even in larger shops I don't see the same kind of heavy architect / programmer seperation as much. It's still there, but a lot of the mindless code has been replaced by libraries, and most entry level coding positions still have a design component to them. Of course the natural progression is as you said, focusing more on design and less on the lower level nuts and bolts, but you make it sound like some kind of line you jump over one day. I see it more as natural career evolution, and at minimum I would still consider myself a "programmer".
Implicit in the question is the idea the programing is programing is programing.
I don't think this is case. I would say just about anyone, baring those individuals with some moderate to severe mental impairment can do some programing. Integration programing is usually nothing more than outlining the corrected steps and gluing that outline onto the required boiler plate. Application programing might get a bit more complex but even that should be attainable for anyone able to read and follow documentation.
Oh sure it can get very complicated when you get into ETL on big data sets and such certainly may require a specialist who makes it business to do it well but I do think its something *anyone* could learn. In the same way anyone can learn to be an accountant or an attorney. Getting past some of the hurdles can be tough but with enough time and resources most normally abled people should be able to get there.
When you get into lower level stuff its a different game. I am not so sure just anyone could be taught compiler design for example at least with the outcome they will be proficient and successful working in the field. As you move from programing for high level applications into programing for 'Computer Science', 'Computer Engineering' or 'Systems Programing' than there is a certain group that is able to follow the math, and think about problems with and without abstractions at the same time and other things not everyone has a facility for.
Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
Just like anybody can learn to draw. Or to swim.
But that doesn't mean anybody can be the next John Carmack, Leonardo Da Vinci, or Michael Phelps.
Even if we reduce it to the nonphysical work and remove the naturally talented aspect, there is the simple matter of time and drive -- which few people have.
Well, you hit the nail of the problem right on the head. We have met the enemy, and it is you and people like you. The fact that you make this statement shows that you are one of the 80+ percent in the industry that don't belong who are destroying the software ecosystem and making garbage software the norm.
You should have just put an end to your post after the first question, since you clearly don't know the answer.
And there it is. The winning answer in this round of Final Stupidity. The fact that you don't think that designing everything from internal data structures to quality unit tests for your code shows how much you truly have no idea what you are talking about. Abraham Lincoln could have told you that tis' better to remain silent and be thought a fool than to speak and remove all doubt.
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
I've interviewed a lot of people for the position of senior engineer. This has taught me that most experienced programmers can't program. Most have trouble writing the simplest of code snippets despite claiming a decade or more of experience.
Given that, I'd say that anyone can become a senior engineer, but few people can learn to program even when given a decade of on the job experience.
Cow Cube
Designing does take some talent, so not arguing there.
However, having attempted to teach people to program before, I can tell you for a fact that you need at least a particular mindset for it. You certainly need one to be *good* at it. It's much like being a car hobbyist. You probably don't want to be an assembly line worker, or even a mechanic, but those who are good at putting cars together tend to have a mindset that is very in tune with putting stuff together and they tend to want to do it, even when it isn't their job.
Of course, nothing says that your job can't make you very tired of even something you might consider otherwise fun. There's probably only so many bolts you can tighten before you get sick of tightening bolts. In the case of the programmer, they probably now want to attack a new problem that they haven't rehashed 100 times over, but I wouldn't say that being a designer makes you special either. Its just another set of problems. The biggest advantage is that you get more control over how things work on your level and down.
We only consider programming to be something of an assembly line job today because we've optimized the hell out of compilers and made languages and tools into some sort of thing where you build your apps out of giant sized Duplo blocks. In the right fields, being a programmer is still a job for wizards, and not lesser skilled workers.
I suppose you were going for humor, but I assure you that in 2012 it is entirely possible to both write code, and enjoy the aroma of a beautiful woman. Bonus points if you can do both simultaneously.
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
I don't know about sour grapes, since it is a reasonable a priori position, but it is wrong as far as I can tell from the literature.
Abstract. A test was designed that apparently examined a student’s knowledge of assignment
and sequence before a first course in programming but in fact was designed to capture their rea-
soning strategies. An experiment found two distinct populations of students: one could build and
consistently apply a mental model of program execution; the other appeared either unable to build
a model or to apply one consistently. The first group performed very much better in their end-of-
course examination than the second in terms of success or failure. The test does not very accurately
predict levels of performance, but by combining the result of six replications of the experiment,
five in UK and one in Australia. we show that consistency does have a strong effect on success in
early learning to program but background programming experience, on the other hand, has little
or no effect.
Almost anyone can grasp algebra 1. The way you make them "get it" is to quit handing out medals just for showing up to class and reintroduce some competition for high grades among students. Kids need to do homework (AKA practice) just like any other endeavor. Right now, in schools, there is no consequence for doing poorly. You'll get passed to the next grade level whether you've mastered the current one or not. Teacher and parents keep patting you on the back just for showing up.
I estimate that maybe 80% of my adult patients born after 1975 are on some form of antidepressant drug. I'm starting to think that they were that early/first generation of kids whose self-esteem was made the prime importance in school, rather than learning and achievement. They finish school and get thrown out into the real world where they are expected to perform to some minimum standards and they can't do it and can't understand why, especially in light of the history of being patted on the back for underachievement. The next step is to get prescribed an antidepressant to help their bruised self-esteem cope with the fact that they never learned anything in school and are likely to remain unemployable for the rest of their lives.
With simplified programming languages like Java, that take care of the "hard stuff", anyone can string together some code and do tasks.
And anyone can also make a hell of a mess.
Unfortunately, many people think you are right. And even worse: those people are team leads, managers, executives. Small wonder that so few coding shops actually manage to push out code of high quality, and why the profession in general is more like a bunch of craftsmen than real professionals.
Programming well takes skill and experience. It is not an easy craft to learn, the devil is often in the myriad details and idiosyncrasies of the platform, the libraries, or the specification. What helps immensely is having access to senior programmers who can make sure you're not reinventing the wheel a thousand times over. Bad news there: because programming is "the lowest of the low of IT" and every programmer wants to get out, there are hardly any senior coders left. Most of them are to be found in the hobby or OSS arena; I find very, very few of them in the corporate world. By the way: I know a fair few people who would like to stay involved with coding (and they continue to do it in their free time), but they do not become our senior coders because that position has been eliminated in pretty much every company I've worked for.
If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
But not everyone is going to be a good programmer. I think the 80/20 rule applies here too. 80% of programmers can program, 20% can do it efficiently.
I see examples of bad programming all the time (or you can just read thedailywtf.com) and currently it doesn't matter all that much whether you spend 100,000 extra cycles in a loop. But we're heading once again to a level where efficient programming is going to become more important (low-end, cheap devices like Arduino and Raspberry for the consumer-end and high-end multi-processor systems like GPGPU and shared clusters on a pay-per-cycle on the other end).
In a GPGPU scientific environment (where I work) shaving 10ms off a single looped calculation can easily end up giving you a result 7 days faster. Finding out that a buffer gets flushed every 64-bytes or every 100 microseconds and understanding why filling up a buffer with 0's (and how to do it efficiently) is faster than waiting for a timer to expire is real programmer's work but none of the documentation or even advanced classes on the subjects don't explain such things.
Custom electronics and digital signage for your business: www.evcircuits.com
Short answer is: yes, in theory; in practice, though, actual results will vary. My observation is that the same is true with programming. Some people are natural talented, some people have good workman-like (workperson-like?) performance, some are pretty wretched no matter how much experience they may actually have, and some just can't grasp the basic concepts enough to really do anything. Note that I've taught computer science on a university level, and I've built software development teams from scratch, so this is based on direct personal observation. ..bruce..
Bruce F. Webster (brucefwebster.com)
So you are saying that both programmers are enjoying the aroma of a beautiful woman while writing code? I like where this is going ...
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
I like to think I'm a more-than-competent SQL programmer, and I don't hurt myself too badly at Web and Windows Forms programming.
I work with somebody who does some great stuff in C# who can't warp his head 'round set theory and therefore has real problems with SQL.
I know somebody else who's a real monster with Cisco stuff (a Cisco employee with certifications coming out his ears), and I'd argue that creating networking and firewall rulesets is every bit a form of programming as anything I do...but he'd need some serious handholding just to do a "Hello World" program in Visual Studio.
I know another guy who can make COBOL sing and is not bad at SQL (though he prefers to write his SQL with more procedural code and less set theory than is good), but he wouldn't have much luck doing more than tweaking a Web form.
We're all programmers, all of us good at what we do, some of us great at what we do...and, yet, making any one of us look like rank amateurs at huge swaths of basic programming tasks wouldn't be hard at all.
Could we become good programmers outside our areas of expertise? Probably. But it took me quite a while to figure out how to truly think in set theory, and I'm not sure I'm capable of more than a handful such masteries in any given field in my lifetime.
Cheers,
b&
All but God can prove this sentence true.
Give me a 32 ounce big gulp and I will tell you of his progress.
vi +
Anybody can learn the basics of all domain (except obvious physical impairment). Everybody can learn how to draw, everybody can learn how to dance, everybody can learn how to speak an other language, everybody can learn maths, everybody can learn how to program. The amount of time required to learn depends on motivation and natural skills.
Not everybody can become exceptional in a particular field. But everything can be taught at a college level to anybody.
I know a fair few people who would like to stay involved with coding (and they continue to do it in their free time), but they do not become our senior coders because that position has been eliminated in pretty much every company I've worked for.
In most engineering fields, engineers don't stay engineers all that long. If they're any good they become managers and stop doing working at the lathe, so to speak. Also, large design exercises are a speciality in some fields and are handled by a department that does only that. In the field, an engineer may be both a manager and a technical problem-solver, but for anything *really* hard specialists are called in. And, tue or not, employers think new graduates will have all this up-to-date fancy shite in their heads, while at the same time, they want managers to have had experience on the shop floor, so they promote upwards from there and replace with cannon fodder CS grads.
BTW, Google prefers to hire maths grads as programmers. Google say that the problem-solving skills of maths grads are better than those of CS grads, and anyone with a maths background will certainly have done some programming during their education and can cope with learning new languages and technologies.
In fact, mathematicians can be the worst: they think computer science is a subset of math and it really isn't.
Totally wrong. Computer science is *ALL* mathematics. It's programming that isn't maths, for the most part.
Based on my experience as a professional software developer dealing with many other programmers, I have to say yes! Anyone can become a programmer. You don't even have to learn how to program!
Computer science is, practically by definition, a subset of math. But there are many branches of mathematics out there, and being great at one doesn't necessarily mean a person is great at all of them.
Also, just because someone happens to be a great computer scientist doesn't mean they must also be a great programmer.
Happy people make bad consumers.
Oddly i am reminded of an anime called s-cry-ed. Straight cooger, a character based on speed, commented to another one. That anyone given enough time can write novel's. The ones that can do it well are the ones who do it better and faster than the others.
With enough time anyone can learn to code just about anything. it's the people who can do it well and in a small amount of time(say months instead of years for a large project) that are the people with the innate ability for it.
I believe everyone can code, but obviously some people are going to be intrinsically better at it.
A few weeks ago, in less than half an hour, I taught about 20 2nd grade kids (generally 7-8 years old) how to count in binary as well as add any length of binary number.
Wondering whether I could beat that, I repeated the feat last week by teaching about 20 1st grade kids (6-7 years old) exactly the same thing. The 1st graders had more trouble keeping their attention than the 2nd graders, but they were all the more enthusiastic to learn.
In case you're wondering how to teach kids of an arbitrarily young age how to learn binary, here was how I did it in three rounds of kids raising their hands to answer my questions:
1. Raise your hand if you like to play video games.
2. How many of you would like to make a video game?
3. Who would like to know the three secrets to making a great video game?
By the third question, I think I could have staged a coup with the eager little mobs.
I've got my eyes on a local pre-school next.
That came out wrong.
PS. Teaching kids how to count and do math in binary is way, way easier than teaching them how to do it in decimal. It should come first IMHO.
Indeed, I had several professors who were great at theory but lousy at programming - one of them was a former grad student of Dijkstra, and he was the worst (although to arrogant to realize it).
Indeed, anyone can become a mediocre programmer.
Unfortunately, or not, depending on how you see it, that's all it takes to grind code for a living.
(Perhaps because it's really hard to measure, and most people hiring can't actually code at all)
It's rather unusual to find someone with great analytical and social skills combined with just
the right amount of stubbornness yet responsiveness, curiosity and pragmatism - that makes a really great programmer.
Lots of folks have strong logical thinking skills. Philosophers. Mathematicians. Lawyers. If logical thinking skills made a successful programmer these folks would be consistently good at it. They're usually not. In fact, mathematicians can be the worst: they think computer science is a subset of math and it really isn't.
Actually, you're technically incorrect on that last point. Anything that you can mathematically demonstrate can be calculated and vice versa. Not that knowing this is of much use in everyday coding of the type you do when you're maintaining a big ball of mud, but hey.
Also fwiw, and in my experience anyway, mathematicians are supremely better coders than CS guys: they abstract more, better, and faster, leading to fewer lines, fewer bugs, fewer edge cases left out, better tests, etc. (Your mileage may evidently vary, since everyone and his dog graduates nowadays.)
Entire industries have been built upon the adage, "one man can do what another can do". Willpower and motivation are more important than raw intelligence, I've lost count of the number of tortoises that have outpaced hares in my experience.
The divide between designers and developers appears to be another example of this. Yes it helps to be so inclined, but 99% perspiration and all that. Its a skill, like any other, just as sales or electrical engineering are skills. Sure the Picassos are a rare breed, but that doesn't mean someone can't pick it up and become a damn good example of an artist if they really wanted to.
When is someone a programmer? I wrote my first programs on a calculator. They were more like macros actually. Was I a programmer? Of course not. Then I wrote my first BASIC program on an Apple ][ of a friend at highschool. Was I a programmer? Not really. Then I saved up all my money and got myself a C64 and wrote programs in BASIC, then 6510 assembly. Was I a programmer? Well, perhaps, but only 15, so what did I know? A couple of years later I bought myself an Amiga 500. Wrote some stuff in 68000 assembly. When studying computer science, I learned a lot of useless program languages, but also C. Wrote lots of programs in C. Then I started a small company, hired an office space where 10Mb ethernet sockets from the wall connected directly to the net for a low fee, built and hosted web sites on a Intel 80486 running Linux. This was 1995. When I got my first job at an internationally operating start-up, I was busy configuring servers running NT, load balancers, firewalls but also did some SQL and coded some Cold Fusion for the company web site. My old trusty 486 served as DNS server. Was I a programmer? Nah, I did not really consider myself one.
The start-up went nowhere and I moved on. I did, and still do, enjoy programming tremendously. I sometimes still do it in my free time as a hobby. So I got a new job and with this job I could program all day. I made long hours that did not feel like long days at all as I was doing some very nice things, or at least that's what I thought. I was making enhancements to core parts of the software, and even got multithreading working for them, something that they were not able to because of compiler bugs, which I also helped finding. I was refactoring their code at high speed, because there was a lot of room for improvement, to say it politely. I often stared with disbelief and some amusement at the nonsensical functional designs handed to me. But worse, I started to clash with their main programmer, who had been there for a long time, and did not like what he saw. Our manager did not extend my contract after a year. He did not like it either. I was using object oriented techniques which they were not used to, it was a "different paradigm" for them, as the manager put it.
This was a disillusion. Programmers at the time were hard to find, and I could not believe that this was happening to me. Was this manager clueless? Probably. Was their main programmer pulling my leg? Perhaps. But I was sure I had done some very valuable things for them and as a reward, I was thrown out. Apparantly, I had been unable to demonstrate my abilities sufficiently. That might have been either my or their shortcoming, but for me that did not matter. I decided to abandon programming, or rather, developing. I felt developing did not receive the respect it deserved. It was often looked down upon by management and being outsourced to India. I decided to become a business analyst.
Life as a business analyst was a walk in the park compared to programming. I could now make designs on a higher level, but with my technical background, also talk to the guys that were going to implement it. I would never hand over a design that the developers would be unable to build. Also, the deadlines where less pressing. In the cycle design-develop-test-release, the time pressure existed mainly in develop and test. The testers would be the ones making extra hours when a release deadline was to be met.
I had been a business analyst for a couple of years at several banks. They have large systems and a high rate of IT staff turnover. Generally at banks, knowledge it sparse, documentation often non-existent, and management not competent on a technical level. They do have enough money though so they just bring in loads of consultants. So being a consultant I benefitted handsomely financially as well. My days as a programmer that got no love were soon forgotten by just looking at my bank account every now and then. I worked happily with the Indian vendor (Infosys) who created just horrible code, but ultimat
My karma ran over your dogma
one could build and consistently apply a mental model of program execution; the other appeared either unable to build a model or to apply one consistently
So..Programmers and Managers.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
Every programmer will get to the point where they don't want to programmers anymore. They start to see how monkey-like programming as a profession is. Then they want to be designers, those who actually need to think of the bigger picture than just putting together basic pieces of code in Visual Studio.
This sounds like something from the 90's when most people were still thinking that the waterfall model works. Do people still think that code monkeys just write code according to some UML and flow diagrams that designers have drawn. ...
Actually, that attitude goes back to the earliest days of programming languages. Back in the 1950s, the first "higher-level" languages were developed, Fortran (for techies) and Cobol (for business folks). If you dig up the early wide-eyed announcements for either language, you'll find widespread claims that they would "end the need for programming", which at the time meant what we call assembly or machine language. They did no such thing, of course; they merely introduced new programming languages that solved some of the problems with the previous languages, but did little to alleviate the more general problems.
The "Visual" approach mentioned by the OP was just one in a long chain of such attempts to eliminate the need for programming, by introducing yet another programming language that solved a few low-level problems in previous software-development schemes. It also failed to eliminate the need for programming, as you can easily see by trying to use some of the balky, buggy products built using that software.
The idea that we can end the need for programming is best understood as a marketing technique, to sell yet another "solution" to whatever its designers saw as the problems with programming. At best, such things can somewhat simplify a few parts of the task that the designers were consciously aware of. So far, there's little evidence that such tools can do more than "move the problems to a higher level". But don't worry; we haven't seen the end of such claimed panaceas. Marketers will continue to tout their "solution" to programming as long as people continue to pay attention (and money) to the people making such claims.
Those who do study history are doomed to stand helplessly by while everyone else repeats it.
Of course it takes a certain kind of person. Doesn't evening?
For example, I can't teach anything to anyone. I can't even teach my cousin to use my alarm system, so it's just easier to not arm the system when he's around. The skill that I lack is to serialize information in a manner able to be conveyed to another human being.
The reason I lack that particular skill is because I'm always in programming mode. And in my programming, it's about "layered truth statements". It turns out that layered truth statements aren't easy to communicate in english -- in part because english announces such ambiguity in any given sentence that truth statements often fail outright.
Since most programming is done in with positive truths, (SQL especially comes to mind), to be a programmer one must fluidly drop english from their mind. Anyone who can't do so (the way I can't teach) will forever struggle.
I agree. Everyone can learn to write basic programs. That isn't to say that everyone can become a good programmer.
I would have to disagree. Programming isn't algebra, it is metaphor. It is building machines out of words. In fact, I don't know if you meant it humorously, but you yourself say "define the WORD algorithm". I'd argue that most algorithms CAN be described in words. Often even English or Swahili words.
I'm not sure, but I think that's why they call the medium a "programming language". It isn't devoid of math or logic -- far from it -- but it isn't the same thing, either, and a person good at real mathematics can easily suck at programming or vice versa.
Here's a program:
"Take an integer variable named i, fill it sequentially with the integer values from one to one hundred in steps of one, and print out its value on the screen I'm looking at".
This is perfectly understandable English, and can be executed by a reasonably bright student to whom the words are directed where the screen is a whiteboard.
It isn't really any different when written "for (i=1;i <=100;i++) printf("%d\n",i);" or any of the myriad other ways of writing the same program in different programming languages. A machine built out of words/symbols that have a fairly carefully specified operational meaning. Not at all like proving that the angles in a plane triangle add up to pi.
rgb
Even when the experts all agree, they may well be mistaken. --- Bertrand Russell.
I've been programming on ond off since 1975 and I came to realize that it was the problem solving that I liked. I think some one stated explicitly that programming was problem solving in the blog "Coding Horror" recently. Of course to be good at problem solving takes practice. After a while one remembers a similar problem that one solved. (That's a lot like math.) Perhaps some version of that technique might be suitable or one realizes that the first technique could have been better and the improvement could be used for the current problem. An inquisitive mindset and the ability to reduce the problem to its essentials helps, too.
It helps to know one's tools well, too. I've heard a musician say that they could finally make good music when their instrument no longer came between them and their music and I think it's the same for programming. When use of the languages and IDE are second nature one can concentrate on the problem solving. I've never worked in a shop where someone handing me detailed design, though. My work assignments have been some thing like: "This is the input and we need these features". Or "this is the output we need (to feed to some other software) design the input and data gathering protocol". So perhaps my "world view" is a bit insular.
So the answer to the question, IMHO, is "no".
A mathematician, Chris, needed to boil some water and found that the kettle was on the table. After some thought Chris took the kettle to the sink, filled it with water, placed the filled kettle the stove burner, turned on the burner, and waited for the water to boil. The next time the kettle was on the counter. Chris thought about this new situation, placed the kettle on the table, and proceeded as before.
Nate
I think it requires a certain level of intelligence as a minimum. Nothing incredibly special but above average
There you have it. You think being able to program makes you special in some way or indicates that you're above average.
Here's the truth: Any idiot can write code. Hell, half of Slashdot taught themselves to program when they were between the ages of 8-13.
All it takes is the will to learn something new. It's no different than learning to work on cars. Do you think auto-mechanics have these same discussions? No. They're more emotionally stable, apparently, than the average developer.
Yeah, just about anyone can learn to write computer programs. Just like every who has ever learned to write code, they'll get better and better as they gain experience
Being able to write computer programs does not make you special. Get over yourself.
Required reading for internet skeptics
You need to visit a Infosys or TCS campus in India to watch their training centers churning out "programmers" in the thousands. It will change your mind.
Assuming you (and all the people who modded you up) are programmers, apparently it doesn't require reading comprehension. The guy didn't even mention widgets or dragging and dropping.
I actually thought you'd accidentally replied to the wrong post. If you did, I apologize.
Anyone can draw, most people can draw pictures, the really good ones make art.
Nearly anyone can be taught to code. Most of the coders can make programs to solve problems, but a few of them can make software.
A lot of the skills are similar to art, a lot of touchy feely stuff learned thru skill and practice. We can learn the skills but it takes real practice to be good at it.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
As the holder of a (36 year old) BS in mathematics, I believe I was the only person in my programming class to go over my allotted time on the university mainframe. Clearly I excelled at programming infinite loops.
Geology - it's not rocket science; it's rock science
bent of mind that makes for a successful programmer
is quite similar to that required to successfully create a proof in mathematics. Both mathematical proofs and computer programs can be either hack jobs or works of elegance, or anywhere in between. I think it's safe to say that my efforts in both areas tend toward the former.
Geology - it's not rocket science; it's rock science
There are 10 kinds of people in the world. Those who understand binary and those who don't.
That joke ceased being funny, 10 years ago...
HSJ$$*&#^!#+++ATH0
NO CARRIER
No one with 1600 SAT scores would "struggle through" solving compile errors unless by "struggle" you mean "take some time to solve when they're first learning".
A really good SAT score is an indicator that you are really good at taking standardized tests.
There are often tricks and approaches, that kind of help guide you to what an answer should be in such tests.
But in real life, when a compiler is spitting out a really obscure error message, that's a whole different skill to parse and understand. Heck, it's a whole different personality type to even want to follow the rabbit hole of cryptic compiler messages to find eventually the true issue.
I also knew people at school that had extremely high scores in the SAT, really good grades elsewhere but computer programming issues really befuddled them, and they were poor at retaining solutions to same.
Computer programming is this odd combination of standard academic learning combined with real world "well this is how it all actually works in practice" because in the end computer programmers have to make something actually work. That is I think the reason why great students can struggle with it yet, because they have not yet absorbed a lot of real-world problem solving skills outside the more narrow academic channel.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Oh for heaven's sake. If you aren't a computer scientist (and the above statement demonstrates that you are not), don't make assertions about computer science. And if you aren't a mathematician, don't make assertions about math. "Math is continuous?" That's about as meaningful as saying "pink is ten." What you are talking about is a difference in notation. Look up lambda calculus on wikipedia, and get back to us when you've cleaned up the brain cells that dribbled out your ears when your brain exploded. Don't even get me started on type theory...
Programming is like cooking.
When your oven starts emitting cryptic messages because you put the spatula back in the wrong drawer, I might agree.
Moving to programming from cooking is a far vaster bridge than just "interest".
Now a car mechanic on the other hand, is used to dealing with the kind of malign electronic entities programmers face often.
Perhaps that in the end is the real reason we see so few women programmers, they are not as willing to fight virtual evils just for the sake of victory when complete.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Creating an algorithm for a specific outcome is not like drooling on a rocket scientist, but describes cooking and programming.
Cooks are FOLLOWING the algorithm. Most cooks are in fact computers, not programmers.
Chiefs and programmers yes create algorithms to follow. But how many people create dishes from scratch often?
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I think it requires a certain level of intelligence as a minimum. Nothing incredibly special but above average
There you have it. You think being able to program makes you special in some way or indicates that you're above average.
Here's the truth: Any idiot can write code. Hell, half of Slashdot taught themselves to program when they were between the ages of 8-13.
All it takes is the will to learn something new. It's no different than learning to work on cars. Do you think auto-mechanics have these same discussions? No. They're more emotionally stable, apparently, than the average developer.
Yeah, just about anyone can learn to write computer programs. Just like every who has ever learned to write code, they'll get better and better as they gain experience
Being able to write computer programs does not make you special. Get over yourself.
I think the problem is that people are trying to answer the question with a "one size fits all" approach to answering the question. Sure anybody who can make toast can program. But not everybody can make a toaster.
What I mean by that is you mentioned that the average joe mechanics don't have these conversations, but you have to consider that the average mechanic is not making the advancements or creating the car from pouring casts and machining the parts. They're assembling or disassembling. There is creativity in finding a problem with a car before taking the whole thing apart but otherwise it's fairly laid out.
Programmers, the big daddy programmers are special and unique. Just like the engineers who created a ferrari or any other major achievement. Any body can program, but not everybody has the patience, confidence or desire to take on massive tasks by themselves.
I have programmed for many years and I have never found a good workflow of working with a large team of developers to create a specific product. So far what I have seen is one or two highly motivated individuals to create the bulk of the product and the rest become break/fix contributors or continuing development after the product is well underway.
It's just what I have seen. And those examples could make me an exception not the rule but that's what I've seen.
Were projects like MySQL or PostgreSQL initially effects of one or two highly motivated and focused individuals? I know that unix was and about evey project I have ever seen at the early stages.
Being that these efforts are largely surrounded by individual contributors I think it enables these individual's to feel special and different. And to be honesty, anyone who takes on these massive feats and succeeds is unique and different. The rest are "programmers".
Computer science is, practically by definition, a subset of math. But there are many branches of mathematics out there, and being great at one doesn't necessarily mean a person is great at all of them.
Many years ago, someone found a proof for the "Four Colour Theorem" that was assumed to be correct for many years and then refuted. For an experienced programmer, it would have been obvious that the proof couldn't be trusted, and for a slightly clever experienced programmer, it would have been not difficult to demonstrate that the proof was wrong. Unfortunately, there were no experienced programmers in the 19th century, so the proof stood for a few years.
There you have it. You think being able to program makes you special in some way or indicates that you're above average.
Think of everyone you knew from high school. Now imagine each one of them piloting an airplane you are a passenger in. Not everyone is cut out for every job. Some jobs do require the right person to do the job correctly.
And if you think any idiot can write code you clearly haven't ever been given the task of maintaining some other idiot's code base before. If you really think anyone can do the job I recommend you peruse this site some.
Unlike brain surgery, you can be self taught and be good at programming. But just like brain surgery not everyone should be doing it.
Weaselmancer
rediculous.
You can put anyone through music school but they aren't going to necessarily come out as a Mozart.
No, they won't. They will, however, be a competent and skilled musician.
The problem with developers who think themselves exceptional because they can program is that they all fancy themselves a Mozart.
Required reading for internet skeptics
"Listen up, maggots."
"You are not special."
"You are not a beautiful or unique snowflake."
"You're the same decaying organic matter as everything else."
-Tyler Durden
O lord, bless this thy holy hand grenade, that with it thou mayest blow thine enemies to tiny bits, in thy mercy.
Boss' wife is the head of the art department. She's also the only designer who has the slightest grasp of coding and the only one allowed to try. She also knows when she's in over her head and usually comes to me to bail her out, which I don't mind doing because she usually realizes very quickly that she doesn't know how to pull something off and aske me before she's made a chore of it. She also takes interest in how it was done, so she can learn and improve, which I definitely appreciate. It also helps that she's the only designer at the company that will listen to my design ideas and give feedback other than "you're not a designer, go code something", and that two-way dialog has helped both of us expand out knowledge and abilities quite a bit. I'm starting to get a lot more open-ended work handed to me by her because she has grown to trust my design decisions, and I've started to reply to more of her requests for coding help with advice rather than "I can get to it next Wednesday", which allows her to get it done in the meantime and if she can't figure it out by the time I can get to it, then I'll do it.
That said, we go through a lot of designers; for one reason or another, they dont' last long. Some of them insist that they can code as well as the programmers, until they code themselves into a corner, publish their broken code, and take down a client's site, then try to pawn it off on one of the programmers because they said, per their project manager, they couldn't get to it untill tomorrow. Those designers are usually let go fairly quickly. The ones who leave usually get fed up with the fact that the company views them as peers of the programmers, rather than being one rung higher up the ladder. We've had one leave on good terms, who understood the importance of designers and programmers working side by side toward the same goal; he left to start his own design firm and still contract for us quite frequently.
It's amazing how efficient a small company can be when people in different departments drop their egos and view each other as peers. Likewise, it's amazing how quickly one's ego can get in the way of them keeping (or staying at) a job at a very laid back company that appreciates its employees.
APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
Actually, there are 10 kinds of people in the world, those who understand binary, those who don't, and those who can't recognize a base-3 joke when the see it.
APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
There are 10 kinds of people in the world. Those who understand binary and those who don't.
That joke ceased being funny, 10 years ago...
Eh, I'm only twenty-four months behind the times then.
I've got no problem in saying I have no musical talent. I learnt the saxophone for 3 years when at school. By the end, I was still worse than most people after their first year, and I was never going to get very good at it.
Why would this be different with coding?
I think it requires a certain level of intelligence as a minimum. Nothing incredibly special but above average and an interest in learning how to control that box. Interest can drive aptitude. But a low IQ is going to hamper working in, say, C. Object-oriented and the workings of inheritance in C++ are going to be hard to work with if you're plain dumb.
Documentation for libraries is not infrequently poor or even wrong and there seems to be some tacit assumption that programmers will work out how things work anyway, even if that just means knowing where to get help.
And it depends what you call "programming". If that includes designing solutions to complex or novel (hence no off-the-shelf libraries) solutions, then you have to design complex algorithms, which requires creativity. You need to be able to evaluate and select the right solution, too, something even very smart programmers get wrong.
AFAIK every professional, in every field I know, says almost the exact same thing, and you know what? The ones who say it are usually insecure about something. Anyone can learn. You did get one thing right, it takes interest, but more importantly it takes motivation (necessity) and inspiration. Unless there is something genetically or mentally wrong with you due to trauma, anyone can learn anything and apply it. We as a species are innately creative. It's why we made tools and developed technology as a species. Now, some people have genetic dispositions for learning things like syntax, morphology, and may even have strong mathematical skills. Awesome for them! They will learn things like programming, foreign languages, music theory, physics and chemistry quicker than others and may be able to develop improvisations quicker to address challenges when applying what is known, but as long as there are no issues with brain function, yes, anyone can learn whatever they want, even programming. Whether they will be able to turn it into a vocation is an entirely different issue unrelated to learning having more to do with the speed of applying what was learned relative to competitors in a market.
No one is born with a natural ability to write code or design car engines.
No, but a great many people have a natural inability. In the case of car engines, the resulting products will never hit the road. In the case of programs, they do, as we all witness every day.
Programming skill isn't the same as an ability to string small pieces of code together, any more than writing skill is the ability to touch type. It takes both perception andperspiration to be a decent programmer or decent author. Having an English literature grade may be useful, but it doesn't impart the ability to captivate your audience with your words. And taking programming classes won't hurt, but also won't make you come up with new elegant and efficient algorithms.
At best, you can become a codemonkey, who is to programming as an assembly man is to an engineer, or a typist is to an author.
Disclaimer: I am a senior sysadmin. I deal with both programmers and codemonkeys on a daily basis. In my long experience, there are hard-working and otherwise smart individuals who will never produce good code, and there are naturals who could, but are too lazy or careless. And there are a few who both have the ability and the drive to do so. Those are programmers, and I respect their profession.
It was so long ago I cant remember who but one of (I think it was the first) Wirth, Hoare or Dijkstra said that the best programmers fell into one of two groups: those with good facility with math and those with good facility with their native language.
The tyrant will always find a pretext for his tyranny - Aesop
They will, however, be a competent and skilled musician.
No, they won't. Some people just don't have rhythm, or can't even tell when something is "in tune".
I think you have spent too much time around talented and driven people to realise how many people there are out there that just wouldn't be able to handle writing anything more than a trivial piece of software.
Programmers aren't "special" as in "better than others", but they are "different" in the same way that a lot of engineers are. More likely to be on the autistic spectrum for a start, which generally means they are more logical, focused and able to solve problems systematically.
which is totally what she said
You didn't want to learn it and you never applied yourself to learning it. It's hardly surprising that you then didn't learn it.
[FUCK BETA]
Why would this be different with coding?
Quite so. This kind of comment seems to be missing from the thread.
Being good at programming does make you special in as much as you can sell that skill for money, and the better you are the more you can sell it for.
I don't think there's much wrong with many slashdot residents claiming to be skilled at programming. It is a tech forum after all.
I claim to be skilled at programming. There's nothing wrong with that and without arrogance I am happy claiming that most people (not most programmers) simply won't be as good as me because I have a natural aptitude and a natural drive which makes putting in the requisite 10,000 hours pretty much effortless.
But that's OK. I would bet that almost everyone is better than average at something.
I'm a terrible musician. I'm a terrible writer---I could never write a novel. I would suck as a politician. I can't dance. I would be a terrible administrator, organiser or logistics kind of person. I could never teach school below 16 and even then only good, motivated students, without flipping out or giving up. I probably could run a marathon if I trained, but I would never be good at it. I suck at chess despite a fair amount of playing. I'm a poor actor. I'm bad with kids.
I can never be good at any of those things above. I lack the innate talent and I lack the ability to make myself work at them enough.
I don't claim this makes me better than other people (except of course at programming) because clearly programming isn't the be-all and end-all of things.
So, I think that almost anyone could learn to assemble a few statements of code together. But programming is more than that, and I don't think many people could be programmers, much like most people can't be artists even though splatting down paint from a brush is trivial.
SJW n. One who posts facts.
That anyone given enough time can write novel's.
Trues me, if I ever wrote a novel, it would suck really badly. However, I would use apostrophes properly.
SJW n. One who posts facts.
There is nothing special about any profession, anyone can learn to do anything - Given that they don't have a disability that prevents them, and a minimal level of intelligence
But to be good enough at it to be employed doing it they need two things : Motivation, and experience (the second being dependent on the first)
What they may never be no matter how much experience and motivation they have is the innate ability to be better than average at the task ...
There is no getting over the fact that some people are better at some things than others, however the majority can do anything to at least a competent level
Puteulanus fenestra mortis
From what i've seen, if " By the end, I was still worse than most people after their first year" ... basically it's not that you can't. Just that you are not passionate. And still...
I think i was HIGHLY passionate about playing music. I tried to learn. So after a few months i began to forget to train. Not deliberately, only i wake up in the morning and said : "oops i forgot to play yersteday evening". When it came to computer i never forgot... that, i think, make the difference.
The best in any field is the most OBSEDED about this field. They just can't think about something else. Hence Booby Fisher.
What does it mean, "appended to the end of comments you post"
I played saxophone in the band for 6 years. I have no special musical ability. I played alto sax with the regular band and tenor sax with the jazz ensemble. I was much better at the "jazz" than the regular band music. The difference was that I really enjoyed the jazz ensemble's music selection and I practiced it a couple hours a day, much to the dismay of my neighbors. If you find an interest and practice you can be okay. If someone has an interest in coding/programming they can practice and be okay even if minimally talented.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
A snippet of the Wikipedia article on Mozart:
"In Rome, he heard Gregorio Allegri's Miserere twice in performance in the Sistine Chapel and wrote it out from memory, thus producing the first unauthorized copy of this closely guarded property of the Vatican."
A bit more than the average tone deaf person can accomplish. Sometime a trained musician would find difficult I would imagine.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
half of Slashdot taught themselves to program when they were between the ages of 8-13
And that is exactly the kind of mind it takes to program. The good and bad programmers I've known divide fairly equivalently to those that taught themselves before high school and those who wrote their first code in CS 101.
For great justice.