Follow Slashdot stories on Twitter


Forgot your password?
Education Programming

Can Anyone Become a Programmer? 767

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?"
This discussion has been archived. No new comments can be posted.

Can Anyone Become a Programmer?

Comments Filter:
  • Answer (Score:5, Insightful)

    by Anonymous Coward on Sunday September 16, 2012 @02:53PM (#41354625)


    • Re:Answer (Score:5, Funny)

      by Deep Esophagus ( 686515 ) on Sunday September 16, 2012 @03:18PM (#41354947)
      If you had what it takes to be a real programmer, your answer would have been:
    • Re:Answer (Score:5, Insightful)

      by man_of_mr_e ( 217855 ) on Sunday September 16, 2012 @03:58PM (#41355395)

      Anyone can become a programmer. Not everyone can become a GOOD programmer, or even a competent one.

      Even fewer can become an exceptional programmer.

      It's not just practice. I've put far more than the 10,000 hours required to master a skill into learning to play Guitar, but I still suck. The reasons are probably many, but I've also come to understand I'm just not talented in this regard.

      Just like some people are natural artists, some people are natural programmers. Some people aren't natural programmers, but can become proficient with a lot of practice. Some people can't get it not matter how much or how long they practice.

      Some people think logically. Some people think intuitively. The former can become competent programmers. The latter, not so much.. because computer languages just don't make intuitive sense.

      The REALLY good programmers are ones that can both think logically AND intuitively. They can use logic and still intuitively jump to conclusions that would take far longer with logic alone.

      Now, whether or not you can change your way of thinking, or whether or not you are born with a certain way of thinking is unclear. Certainly, I think how a child is raised affects the way they will think as an adult, but it also requires aptitude.

  • Absolutely not. (Score:5, Insightful)

    by mark_reh ( 2015546 ) on Sunday September 16, 2012 @02:54PM (#41354631) Journal

    Some people do not have the logical thinking skills that are required to be a successful programmer.

    • by Designersa ( 2731523 ) on Sunday September 16, 2012 @02:56PM (#41354655)
      Most people also want to have romantic relationships in their lives, so becoming a programmer is a very bad choice for them.
      • by Kergan ( 780543 )

        More often than not, I've found it actually is a three constraint problem. Work, play, women; pick two.

      • Re:Absolutely not. (Score:5, Insightful)

        by pla ( 258480 ) on Sunday September 16, 2012 @06:57PM (#41356853) Journal
        Your joke aside, I don't think you've really missed the mark by much, here...

        I firmly believe that somewhere around half (possibly much higher) the population cannot ever learn programming to any meaningful level. Perhaps really simple Excel formulas, but they learn them more by rote than through any true understanding of what really goes on to make the magic happen.

        Of the other half of the population, who have a sufficient grasp of logic and can grasp the idea of breaking a problem down into tiny steps to solve it methodically - The vast majority, well over 95%, hate doing so. Hate it. They would rather have a root canal than do that for a living. They might have managed to suffer through an intro-to-programming course or two in college, but they really would go completely bonkers if you asked them to program on any regular basis.

        Programmers, on the other hand, tend to view our art almost as a form of meditation - The real "skill" of our art doesn't involve the ability to handle boolean logic or memorize APIs (those just count as a sort of prerequisite), but rather, the ability to go into a deep alpha state and stay there for hours at a time.

        So... No. Not anyone can become a programmer. And of those who can - Most don't want to, not for any amount of money.
    • by AK Marc ( 707885 )
      Julia Childs picked up cooking late in life with no previous interest or apparent pre-disposition. Programming is like cooking. The only thing that stops old women from moving from cooking to programming is interest. Otherwise, writing and following a recipe is programming, even if not on a computer.
      • by Dahamma ( 304068 )

        I like this analogy.

        More generally, I'd say no, not everyone can learn to program to any useful degree. But it most certainly isn't based on some silly concept like "a special logical mind" or anything.

        If people can become accomplished economists, musicians, physicists, or poets, graduate from medical or law school, or as you say, write an authoritative, award winning cookbook, they can learn to program. They may not because they have no interest, but if they have the capacity and motivation to learn they

      • Re:Absolutely not. (Score:5, Interesting)

        by rgbatduke ( 1231380 ) < minus bsd> on Sunday September 16, 2012 @05:10PM (#41356041) Homepage
        Actually, programming is more like writing a cookbook. Lots of people who cook can't write a cookbook. For example, illiterate ones. Similarly, it helps to be literate in a computer language in order to be able to program, which in turn requires an above average ability to deal with a peculiar kind of metaphor and an above average understanding of tools far more demanding than a source of heat, a knife, and some ingredients. The thing that prevents old women or old men or old monkeys or old dogs from moving from food to programming is a mix of intelligence, interest, and motivation.

        It is, for example, fairly common belief that programmers make an income that is well above average. It's a common belief because it is true. Yet you don't see teen-age fry cooks piling in to programming to multiply their minimum wage income by close to an order of magnitude. Why not? Because programming is difficult, and you have to be both smart enough to do it and inclined to WANT to do it, regardless of the obvious rewards of working in an air conditioned environment sitting on your ass while making $60K/year or more with benefits compared to slinging greasy burgers at possibly armed and dangerous clients in a Burger King late at night for $200 a week on a good week -- ooo, and then there are those pesky social security deductions and a manager that laughs hysterically if you mention the word "benefits" right before he fires you.

      • Not really (Score:4, Insightful)

        by SuperKendall ( 25149 ) on Sunday September 16, 2012 @05:44PM (#41356293)

        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.

    • Re:Absolutely not. (Score:4, Informative)

      by u38cg ( 607297 ) <> on Sunday September 16, 2012 @03:33PM (#41355121) Homepage
    • Re:Absolutely not. (Score:4, Interesting)

      by Greyfox ( 87712 ) on Sunday September 16, 2012 @03:47PM (#41355265) Homepage Journal
      And it's no possible to learn those? Logic isn't magic. You don't have to have a certain midiclorian count to learn it.

      In my experience, anyone can become a programmer. I've seen enough of them do it. Also, in my experience, most people can't become good programmers. It requires a certain obsessive interest that most people either don't have to begin with or lose once they start thinking about girls, children, hobbies and the like. Plus it requires a somewhat high midiclorian count.

      I don't have any data to back it up, but I'd guess that if companies knew how to filter on good programmers in the interview process, only about 10% of programmers working today would be working as programmers. And the average salary of a programmer would probably be upwards of one million dollars. Fortunately we can kind of limp by on the mediocre programming and design put out by everyone else, and it's usually at least a bit of a productivity boost for the company.

    • Re:Absolutely not. (Score:4, Insightful)

      by b4dc0d3r ( 1268512 ) on Sunday September 16, 2012 @04:06PM (#41355489)

      I worked with a guy who did a lot of VBA and a little ASP code. He usually got about 90% right, and then mental blocked on some syntax.

      I'd give him a few hints, and eventually he would solve it. But the next time it came up, he just couldn't grasp it.

      I'm not saying he can't become a successful programmer. But without some very careful guidance, study, and experience, he won't. And because he won't take the time, he can't become a programmer.

      He needs to understand things like where a function is. Is it in a static class? Is it a global function? Is it a class method? And why does it work one way but not another? Given time, he could learn these things.

      He also can't spell worth a damn and knows it. With a language with as many broken rules as English, you have to develop some sort of intuition about which letters go together in this context, and with programming you need the same kind of intuition, Maybe they are related, maybe not. But hopefully it made more sense than a car analogy. If you don't understand why the parts don't fit together the way you think they should, you can't make progress.

      So regardless of whether people have the logic skills and abstract thinking, you can have the skills but not the tools to use them. I'll leave the flamewar about people who completely lack the skills to somewhere else.

  • I dunno (Score:4, Insightful)

    by MightyMartian ( 840721 ) on Sunday September 16, 2012 @02:55PM (#41354643) Journal

    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.

    • Re:I dunno (Score:4, Insightful)

      by Joce640k ( 829181 ) on Sunday September 16, 2012 @03:09PM (#41354811) Homepage

      A bit like playing the guitar then. Anybody can learn a few chords but being a professional musician takes a thing called "talent".

      (Or substitute any other skill for playing the guitar...)

      To answer the original question: I refer you to Betteridge's Law []

    • This is my general feeling on the matter too.

      I used to spend a lot of time in the college computer lab trying to help people learn to program. Unlike many programmers, I actually kind of enjoy that sort of thing.

      And there were some who understood, and many who didn't. No matter how you worked the angles or found different ways of explaining it, they just couldn't build an effective mental model of what the computer was doing in their head.

      I would be really curious to watch the person in the article who clai

  • by Anonymous Coward on Sunday September 16, 2012 @02:58PM (#41354671)

    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.

  • Motivation (Score:4, Insightful)

    by Tablizer ( 95088 ) on Sunday September 16, 2012 @02:58PM (#41354673) Journal

    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.

  • unfortunately (Score:5, Insightful)

    by circletimessquare ( 444983 ) <.moc.liamg. .ta. .erauqssemitelcric.> on Sunday September 16, 2012 @02:58PM (#41354675) Homepage Journal

    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?"

  • by TheRealGrogan ( 1660825 ) on Sunday September 16, 2012 @02:58PM (#41354683)

    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.

    • I agree, I was able to hack my way through the classes needed in my CS program but it was obvious my skills were more on the hardware, and networking side of the house. My code was always clunky and barely capable and took much more work than others. Not that I didn't try, but coding just wasn't where my brain worked.
  • so true! (Score:5, Interesting)

    by joocemann ( 1273720 ) on Sunday September 16, 2012 @02:59PM (#41354705)

    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.

    • by gidds ( 56397 )

      a day's work of coding meant sitting in one spot, staring at chars/text, thinking, and then more of the same.

      To judge from some of my co-workers over the years, the 'thinking' part would seem to be optional...

  • by ryen ( 684684 ) on Sunday September 16, 2012 @03:02PM (#41354719)
    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
  • Anyone... (Score:5, Insightful)

    by Wattos ( 2268108 ) on Sunday September 16, 2012 @03:04PM (#41354763)

    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.

    • Re: (Score:3, Interesting)

      by RabidTimmy ( 1415817 )
      I think this provides a reasonable basis for how to think about the issue. I read through most of the Ars comments and I found one recurring confusion that nobody seemed to have picked up on that seems to be continuing on into the Slashdot comments. That confusion is really that people are arguing two different questions. The first is "Can anyone be a good/professional/successful programmer?" and the second is "Can anyone learn to program?". These are in fact two different questions.
      I've found everyone
  • The question (Score:4, Interesting)

    by DarkOx ( 621550 ) on Sunday September 16, 2012 @03:09PM (#41354813) Journal

    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.

  • by HappyEngineer ( 888000 ) on Sunday September 16, 2012 @03:13PM (#41354867) Homepage
    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.
  • by guruevi ( 827432 ) <> on Sunday September 16, 2012 @03:26PM (#41355037) Homepage

    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 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.

  • by bfwebster ( 90513 ) on Sunday September 16, 2012 @03:27PM (#41355041) Homepage

    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..

  • by TrumpetPower! ( 190615 ) <> on Sunday September 16, 2012 @03:31PM (#41355089) Homepage

    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.



  • by godrik ( 1287354 ) on Sunday September 16, 2012 @03:34PM (#41355135)

    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.

  • Of Course! (Score:5, Funny)

    by PatDev ( 1344467 ) on Sunday September 16, 2012 @03:43PM (#41355225)
    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!
  • Yes. (Score:5, Interesting)

    by ddt ( 14627 ) <> on Sunday September 16, 2012 @03:59PM (#41355405) Homepage

    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.

  • by kipsate ( 314423 ) on Sunday September 16, 2012 @04:35PM (#41355751)
    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 ultimately made sure it worked somehow. And if they didn't, it was not my problem. Bliss!

    Currently I am moving back to a more technical role, but one that is very specialist and not so easily outsourced, and always in demand. This means I can keep on contracting, earn a lot of money, have some independence, and for the first time in years I get to do some technical stuff again that I liked. The best of both worlds.
    Back on-topic. Can anyone become a programmer? Yes, or at least, anyone can call himself a programmer. I have seen people calling themselves "HTML-programmers" which is embarrassing enough. I was programming non-trivial programs in assembly at the age of 15 but did not consider myself a programmer, or rather a developer, because it entails so much more. Developing efficiently requires a very good understanding of the bigger picture. To be able to see the bigger picture, you have to know about data structures, design patterns, designing databases. You have to know what is efficient and what is not. You always have to think ahead - you don't want to paint yourself into a corner with your code. You have to know about the libraries that are at your disposal so you don't reinvent the wheel. You must know and understand what has already been coded, which can be very difficult. You must know which techniques to know when. Know about middleware and how and when to use it. Then you have to keep up with new developments - new programming environments, new languages (Java, C#, an updated version of C++), new libraries (LINQ for C#), new domains (smartphone apps). Above all, you have to be able to think at a very high level of abstraction if you want to be really succesful. That takes brains, a lot of brains, more brains than most people have.

    Therefore I am of the opinion that although everyone can call himself a programmer, not everyone can really be a programmer. But that the ones who are, should ask themselves the question what the point is of being one. The job is lowly regarded, often pay is decent but nothing spectacular, and your job is always at risk of being outsourced to the lowest bidder by clueless management who see cheaper ways. You will have to keep up with new developments to not loose your market value and that takes time and energy. If you do a good job, do not expect to get any compliments as it will often go completely unrecognized.

    It is a sad state of affairs in developing. Good luck to you if you are a programmer. You will so need it.
  • by holophrastic ( 221104 ) on Sunday September 16, 2012 @04:41PM (#41355809)

    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'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.

Behind every great computer sits a skinny little geek.