Is programming potential like chess potential? How much is learnable?

jbskaggsjbskaggs Posts: 909Member

I was wondering how much of programming is related to innate gifts. Like in the game of chess knowing the rules and even knowing the chess examples and stratagems of the masters, and even years of experience cannot raise you beyond your mental limitations. I have broken the rank of 1700 only once in chess and tend to float around 1500 in long game and 1000 in blitz chess. I have played approximately 40,000 games of chess since 2006. I read the books know the openings etc but that did not open my mind up to be able to play chess at a grandmaster level.

I suspect that coding or well any skill is that way. There is the group of people who can think and develop in ways well beyond their peers. Sometimes their ideas are so simple and yet world changing- that in hindsight their idea is purely common sense- but before they had the idea everyone was blind to it. Or their idea is so esoteric and advanced they seem to be trying to break the laws of physics- until you realize the laws of physics were misunderstood by experts.

People tend to become saddened when they compare themselves to the geniuses of the fields, and feel if they can't perform at that level they shouldnt try. Which is well very foolish. One should compare themselves to were they were and to how much they have improved or grown. And to how much they enjoy the discipline.

Comments

  • fire7sidefire7side Posts: 882Member

    Yeah, I think the smarter people are, the more they go into lower code like c and write the stuff that most of us use. People using engines like Godot are more jacks of all trade. Some programming, some modeling or 2d art, some writing dialog. Then there are some that write plugins, etc.

  • DaveTheCoderDaveTheCoder Posts: 891Member

    I think that anyone with quantitative aptitude can learn to program. Talent helps in learning quickly, solving problems quickly and thinking out of the box.

    I don't think that writing low-level engine code in C or C++ takes more talent than writing in a simple scripting language like GDScript, but it takes more patience, discipline, and attention to detail.

  • cyberealitycybereality Posts: 5,341Moderator
    edited December 2021

    So I've been programming games for over 25 years. I was always good at computers, and seemed to understand them well even as a kid. In fact, in the early 90's (when everyone started getting PCs) my family was too poor to afford to get one initially, but I still read PC gaming magazines and learned stuff from books. I would go to my friends house's and fix their computer even though I didn't even have a PC of my own. I don't know where this came from, and I don't believe anyone knows.

    But I don't think people are born smart. You are a blank canvas when you are born and everything that happens to you changes how you develop. For example, my parents used to buy me nerdy toys as a kid. I remember I had a Commodore 64 when I was like 4 years old. Even younger, I had this toy called Speak-and-Spell, which was like a calculator with a keyboard that would say words (in a Stephen Hawking voice) and you would have to type them in. So I think stuff like this made me understand technology at a young age.

    I went to art school for game development. It was a small program in a bigger school. When we started, there were about 60 students in the class. But by senior year, only 4 of us graduated. Most of my classmates were traditional artists, liked games, but didn't know how to program. I tried to help them with their projects, but I quickly realized some people just can't understand programming. Even simple stuff like variables, they just didn't get it. Maybe it could be learned later in life, but it is very difficult without a lot of effort.

    But as I said, I've been making games for 25 years. At the beginning, I was very bad. Though I was able to make some simple text games the first week I started programming, it took about 4 years before I was able to make 2D games without following books. 3D was much harder, though I dabbled in this the whole time. And I've read a LOT of books. Probably hundreds of books on programming and game development. So it's misguided to think people are born as some hackerman coding wizard. It takes years of dedication and effort to get to that level. Sure you have people like John Carmack, but they are outliers. The vast majority of people got to the level they are at by constant practice and learning over many years.

  • TwistedTwiglegTwistedTwigleg Posts: 5,348Admin

    I think anyone has the potential to become skilled at programming or really anything with practice. I think the way people think and approach problems can lead to an advantage in some areas (and disadvantages in others), but I think with time anyone can reach the same level.

    I've found the hard part is not getting discouraged and comparing yourself to those who seem more talented/skilled/etc, as you often only see a snapshot of their success/journey and not the entire process that led to them to where they are.

  • fire7sidefire7side Posts: 882Member

    If someone bothered trying to learn Godot, they probably have the necessary skills to be pretty good at it. You've already eliminated a huge percentage of people that probably won't get good at it. We're attracted to things because we have an aptitude for it. I can't see myself making changes to Godot in C++. I'm really lucky if I can write a game using as many plugins and tutorials as possible, but a lot of programmers can't model as well as me in Blender, or do 2d art as well, or write a story. Could I? Maybe, but it's not going to happen. I think it's about 50/50 natural ability and effort. You are born with a lot of things. Some people are born with very low intelligence. That's just a fact. Most are close to average. Some are higher, and a few are genius. I would say anyone with average intelligence can program in Godot and be good enough to write a game with it. A good programmer won't necessarily write a good game, and none of it is important in any way.

  • cyberealitycybereality Posts: 5,341Moderator

    Yeah, you kind of have to know your strengths and weaknesses. I spent years writing my own game engines (in DirectX11 and 12 and Vulkan). I did get something working (very basic but functional), however, I realized I wasn't an engine programmer. Yeah, you can learn anything if you are smart enough and spend the time, but everyone has traits, it's not like you can be a master at everything. So I decided that using an off-the-shelf engine was a better use of my time, and played more to my strengths. And Godot is perfect because it is open-source and very flexible, so I can basically do whatever I wanted to do in a custom engine. And while you can learn new things at any point, you should choose things that fit with who you are. Don't try to be someone else.

  • jbskaggsjbskaggs Posts: 909Member

    I would double awesome that response if I could.

  • Erich_LErich_L Posts: 702Member

    @jbskaggs said:
    I was wondering how much of programming is related to innate gifts.

    Nahhhh mate sorry but I have to stop at the premise. I don’t believe and am not convinced you don’t have the capability to play chess at the grandmaster level. Innate gifts is just what we mention when someone really impresses us. I‘d wager the more likely explanation is that you’ve surrounded yourself with people who care about you and won’t treat you any differently if you became a chess grandmaster. Furthermore, I’d wager (insert 5 other reasons someone could be strongly motivated to become a chess grandmaster) just didn’t happen, such as having a buddy named Erich scoffing at every whiff of self doubt.
    I won’t deny the existence of pure genius, but I refute the idea you can’t beat a genius with hard work.

  • DaveTheCoderDaveTheCoder Posts: 891Member
    edited December 2021

    ... but I refute the idea you can’t beat a genius with hard work.

    I don't know about that. A chess match in a tournament requires making chess moves in real time, and there's a time limit. I don't think that hard work can compensate for a lack of talent in this case.

    Physical abilities are analogous. I don't believe that everyone has the ability to become a world class tennis player, musician or dancer, regardless of how much work is put into it.

  • MegalomaniakMegalomaniak Posts: 4,822Admin

    Hard work beats talent every time if talent doesn't work hard.

  • cyberealitycybereality Posts: 5,341Moderator

    @DaveTheCoder said:
    I don't think that hard work can compensate for a lack of talent in this case.

    But all talent is is hard work and practice over an extended period of time. It's not like babies are born knowing the rules of chess, or that there is even such thing as a game. This is all stuff you learn.

  • fire7sidefire7side Posts: 882Member

    We kind of have an attitude that all things should always be equal, but it's really not the case. Hard work can definitely help but it really can't make up for raw native intelligence. Or like Dave the Coder said about a tennis player. If both of them work equally hard, the one with better reflexes and intelligence is going to win. That's just a fact, and it's the same in pretty much anything. And it's graded, there aren't a few geniuses and everyone else is average. Most are average. It's kind of a bell shape. We're genetically different and that changes our outcomes. It's a good thing, I think. It would be boring if everyone was alike. Why do you have to be a grandmaster? I don't. I stay away from chess books because I don't want to be playing these strategies someone else came up with. Why do you have to work hard? Can't you work easy? We're so keyed to success. Some people just do it for a hobby. Some do it for a living. I have no intention of being the best programmer in Godot. If someone is great at it, I'll sit in the bleachers and cheer them on the same as I'll cheer on the 7 foot basketball players that I'll never be. I have a gift that makes me generally good at almost everything but not great at anything. Maybe I could be great at one thing, but my makeup doesn't really allow it.

  • jbskaggsjbskaggs Posts: 909Member

    Nicely put.

  • cyberealitycybereality Posts: 5,341Moderator

    That's all well and good, but I want to be the best.

  • MegalomaniakMegalomaniak Posts: 4,822Admin

    @Megalomaniak said:
    Hard work beats talent every time if talent doesn't work hard.

    I should properly credit this quote: Tim Notke. :+1:

  • BimbamBimbam Posts: 310Member
    edited December 2021

    I largely agree with fire7's response but to add to it I think it's important to realise that what people think of as genius is often honed to specializations even within the class they are considered a genius.

    Even at the peak level of sport, a tennis star may be considered the best 'on grass' player, or the best 'doubles' player. The chess analogy has this with the various playstyles, blitz, classical, rapid etc. with different components to learn for each and even some elite players specialising in one over the other.

    Programming is an immensely broad topic where even knowing the rules may not make you proficient for a particular use case. I used to work with a few seasoned C greybeards years ago (who contributed to VLC codecs from memory) who were unquestionably leagues ahead of me in their programming knowledge, but I'd be willing to bet they'd struggle to wrap their head around rapid development for data science projects or quick game prototypes, simply because their style/design ethos is about building long-term reliable/efficient systems using older waterfall methodologies. This doesn't mean they can't relearn, but ultimately there are only so many hours in the day and pivoting to a new specialisation will naturally result in lost knowledge in the previous or conflicts in styles.

    I think a large part of your upbringing is about forming your 'logic of learning' if you will. I had an interesting debate once with an artist friend of mine who described creativity in art as a form of logic. To her the steps you take to compose a piece of art IS logical and follows a pattern, but the steps she described to me were foreign and in some cases counter-intuitive to what I considered logical. You ARE a blank slate as a child, but there's only so much you can learn in a given amount of time and when 2 forms of logic/learning are conflicting, I feel it creates a barrier for some and importantly, the people we consider 'geniuses' essentially never changed to begin with and started from the earliest ages.
    While I'm sure I could teach this friend of mine how to code, I think they may always inherently struggle to problem solve in code as internally their logic systems are conflicting. Similarly, I think I could be taught the fundamentals of art and composition, but would still struggle to achieve true creativity.

    That does not mean you shouldn't try, and everybody can achieve great things in any field through time/effort. But yes, I think your 'potential' in something is limited by the amount of 'somethings' you invest in.

  • jbskaggsjbskaggs Posts: 909Member

    @cybereality said:
    That's all well and good, but I want to be the best.

    As should we all. But my question isnt should we, but are certain aptitudes innate versus how far can one create one.

    Chess skill does fall with age, as the speed process of judgment and memory weaken with time. To be very goo at chess one has to look forward and memorize how several future games play out and keep those future games actively updating and running, while scanning for any variations on those potentialities so that one can obsfucate one's own intent with time and redirection. Much of this I don't know how learnable it actually is as it is "hardware" based- sorta like flash memory in a computer. ne may have the right knowledge but be able to retain that knowledge in "flash memory" long enough to implement it.

    So I wonder if coding is the same way- being able to foresee the combinations of code well enough to go beyond the norm. I have met people who code and debug in the mind before they ever write anything into a computer system. I doubt many of us have that type of memory and mental visualization to do so.

  • GowydotGowydot Posts: 122Member

    Coding is just learning a language to talk to computer. If you were to go "all in" on Godot and learn nothing but GDscript then most people should be able to do that.

  • cyberealitycybereality Posts: 5,341Moderator

    Yeah, I do a lot of coding in my head. Like that 3D shader I wrote, I spent several days testing algorithms in my head before I started coding. Ultimately, the idea I came up with would have worked, but it was difficult or impossible to do in the Godot shader language (though I think I could have done it in Vulkan or something modern with compute shaders). In any case, I ended up doing research and found code by Crytek that was published in the book GPU PRO 3, and it was exactly what I needed. Those people at Crytek are obviously more advanced than me at shader programming, and they figured out a nice trick I probably wouldn't have come up with on my own. But I enhanced the algorithm and made the 3D effect better (because I was adding an artist perspective to it, as well as my extensive experience with stereo 3D). But now that I understand how it works, I could probably develop something new with the same ideas. That is how you learn, from people that are smarter than you.

  • BimbamBimbam Posts: 310Member
    edited December 2021

    @Gowydot said:
    Coding is just learning a language to talk to computer....

    I disagree. Coding is solving logic problems that happens to be in a language you also have to learn to be able to convey the solution to a computer.

    If you can't solve the problem in your native language (using pseudocode), knowing the programming language won't change that.

  • MegalomaniakMegalomaniak Posts: 4,822Admin

    @Bimbam said:
    I think a large part of your upbringing is about forming your 'logic of learning' if you will. I had an interesting debate once with an artist friend of mine who described creativity in art as a form of logic. To her the steps you take to compose a piece of art IS logical and follows a pattern, but the steps she described to me were foreign and in some cases counter-intuitive to what I considered logical.

    Each and every system has it's own internal logic. And every logical system is ultimately a matter of familiarity.

    Lets compare programming to drawing, many people say they can't draw but that's not true and not really even what they mean. If you can hold a pencil and you can draw a line - even a wobbly one then congrats, you can draw. But to draw a anatomically correct human depiction you have to be familiar with the anatomy of a human. And that is a (bio-)logical system. So you need familiarity with the structural logic.

    So it's fair to say you can't draw a human just as it's fair to say you can't program a game even if you know how to draw a line or type in some programmatic text. And on that same note, even if you are afraid of writing code and choose to use a visual programming environment instead, you still need to familiarize with the logical system to produce something useful with it.

  • GowydotGowydot Posts: 122Member

    I meant in a sense that you can define the problem and debug a code in your head, given you already have the knowledge and experience on the language.

  • MegalomaniakMegalomaniak Posts: 4,822Admin

    @Gowydot said:
    I meant in a sense that you can define the problem and debug a code in your head, given you already have the knowledge and experience on the language.

    You still need to understand the logic of how computers work, what is an integer, a bool, a vector3... so you still need familiarity with the logical system. Understanding concepts is as important as knowing languages. We might both know English but unless we understand specific concepts involving a subject matter we won't be able to hold a meaningful conversation over it.

  • cyberealitycybereality Posts: 5,341Moderator

    Honestly, the programming language is not really important at all. At first, it seems like the most important thing. You would think, like, you want to move to Spain, you'd have to know Spanish first. And if you want to program a game, you have to know how to speak to a computer. It's needed sure, but knowing a language without knowing what you are supposed to say is pointless. And many of the issues and bugs that beginners face with game programming has nothing to do with the language syntax or the API or the engine or anything. It's because they don't know what they are trying to say to the computer. If you think carefully about a problem, you already have the answer. But that is the difficult part for people starting out.

  • GowydotGowydot Posts: 122Member

    Yeah this is definitely from my noob point of view. Wanting to do something but got stuck because of language barrier.

  • fire7sidefire7side Posts: 882Member

    @cybereality said:
    That's all well and good, but I want to be the best.

    I think I still write games because it's the most challenging thing I've ever done. You have to be artist, programmer, possibly musician, and writer. I'll probably skip writing my own music. Being the best is out of the question.

Sign In or Register to comment.