00:00
00:00
Newgrounds Background Image Theme

christopher54000 just joined the crew!

We need you on the team, too.

Support Newgrounds and get tons of perks for just $2.99!

Create a Free Account and then..

Become a Supporter!

What makes a good programmer?

2,755 Views | 21 Replies
New Topic Respond to this Topic

Recently i've been programming a LOT in ActionScript 3. it's the very first language that i've gotten anywhere in, and if i had to tell you, i'd say that i'm just upper intermediate. i can at least solve the fizzbuzz problem lol. but a lot of times i realize AS3 alone won't get me anywhere, even if i become a really good indie dev or something using AS3 alone. I want to learn more powerful languages.

C/C++.
C#.
Ruby.
Python.
Java.

something that will get me hired somewhere good! but when i attempt to learn these languages, i tend to find them difficult (not counting java) and go back to AS3 to code. am i just not cut out to be a programmer? what happens if all i've been doing this whole time is just trying programming out? don't get me wrong, i LOVE the rush i get from making something, especially in code. i made an application updater for myself in adobe AIR yesterday and i'm getting turned on just thinking that i made it all by myself, even if it wasn't mind numbingly hard to do!

even so, i get scared when i think about what my future will be like if i continue on my path to become a good programmer.
just for reference, what do you elite programmers think make a GOOD programmer?


At 1/28/15 05:10 AM, PsychoZombii wrote: even so, i get scared when i think about what my future will be like if i continue on my path to become a good programmer.
just for reference, what do you elite programmers think make a GOOD programmer?

It's okay to be weary of the future. Not knowing something can do that to a person. First of all there are many tracks you can take as a programmer. Programming is a very broad category. From software, to web development, to game development, to embedded systems (think mobile phone), to who knows what else. There are thousands more.

I am no expert, but these are just a few examples. I'm not trying to overwhelm you, but there are thousands of languages that are out there that you don't even need to know about to be a good programmer. All it takes is time, patience, and a willingness to learn and improve.

My advice would be start with Python. It's a fantastic language and is very user-friendly, especially for those who don't have a background in C/C++. CodeAcademy has a good tutorial, LearnPythonTheHardWay.com is pretty good (you can buy the book but it is available online for free), and of course there is nothing like reading the manual and other people's code (although I would refrain from that until you have a good grasp of the language). Learning Python will give you an overall better understand of have programming works.

What languages you learn after that should be focused on what type of work you do. For instance, if you wanted to program apps for iTunes, you'd need to learn Objective-C, Cocoa or Swift. If you want to do web dev you'd need to learn Ruby, PHP, .NET, or Python even (and of course HTML, Javascript, etc). If you want to do game dev, you'd need to learn Java, C#, AS3, or maybe even C/C++ among others.

The first step is the hardest, so don't be discouraged. This forum is slow, but everyone on it is willing to help out if you ever stumble into a problem you can't solve. But just remember, google is your friend!

TL;DR no tldr, you should read it and get used to reading because you'll be doing that a lot

BBS Signature

wow, thank you! you've eased my mind. to be honest, i never thought about what it'd be like to be anything other than a game developer. but now that you've pointed it out, i think i'd be happy programming just about anything. game development can be pretty demanding in my experience, so it'll be fun to explore the different cool programming jobs there are out there for a while.

thanks for the recommendations for Python too. i will absolutely try to learn python, but i think i'll begin with C/C++. it's an extremely difficult language to grasp, yeah, but i'm quite sure that if i grasp it now, it'll help me out with many things in the future, seeing as all languages seem to derive from it. plus, it's probably the hardest language to grasp, so once i actually learn it, it'll be something like smooth sailing from there! i'm gonna bookmark those python links though, they'll definitely come in handy. i'll probably start learning python after i get an understanding of C/C++.

that's a lot of languages...but i'll try to learn one or two languages each year, or maybe more if all goes well.
i really appreciate your help, @coln. certain things have happened lately that made me question this field of work just a tad. but you've given me strength to continue! i hope i can grow quickly as a programmer. i'd like to be able to work for companies like Sony or Google.

very ambitious, i know, lol. but hey, i can dream!

Response to What makes a good programmer? 2015-01-30 01:25:38


At 1/29/15 09:03 PM, PsychoZombii wrote: very ambitious, i know, lol. but hey, i can dream!

I'm glad I can help motivate you! You are indeed ambitious (which is a good thing), especially for wanting to learn C or C++ first. I am still going to recommend against this. C and C++ have many "gotchas" for beginners, and are MUCH closer to the actual hardware of your computer than Python is. Yes, understanding C will give you a richer knowledge of programming, but there's a reason I recommended Python first!

You can't start running marathons if you've never run before. You have to conquer 1 mile first, and then 2, and so on.

Now, I'm not saying starting with C is impossible, I just wouldn't recommend it because it will take much longer to learn than Python. Especially if you like to see results, Python can give you results from day 1 while C may take a few days or even weeks to achieve the same thing. But again, if C is where your heart is set, then learn C! Just know it will be more tempting to give up.

Side note: C and C++ are two separate languages despite their names and similarities. Yes, C++ is a superset of C, but it is entirely different in its structure and programming practices. While it's probably easier to transition from an OOP-style language like AS3 to C++ (which is object-oriented), C (which is not OO) will give you a better understanding of concepts that might seem strange in C++.

And dreaming is what takes us places. If you dream small, you will go that far and stop, but if you dream big, even if you fail to reach your dream you will go farther than you ever could have imagined. Working for a large tech company like Google or Sony is difficult to achieve, but not impossible. As long as you never give up you will succeed, even if success isn't what you thought it was going to be.


BBS Signature

Response to What makes a good programmer? 2015-01-31 17:51:05


yeah, i get you. C and C++ would indeed take a lot longer to learn, but i am very VERY motivated! results are not something i expect right away. i'm also aware that C/C++ are strict languages, and can be pretty daunting; but from experience, i've found that if you keep at something long enough, you can become good at it!

besides, it's like you said-- everyone here is willing to help out if i ever stumble into a problem i can't solve :>

Response to What makes a good programmer? 2015-01-31 21:02:22


Hey more power to you. Just keep Python in mind if you ever feel down. And yes, we are always here (albeit slow) to help. Good luck!


BBS Signature

Response to What makes a good programmer? 2015-02-04 11:15:02


At 1/29/15 09:03 PM, PsychoZombii wrote: thanks for the recommendations for Python too. i will absolutely try to learn python, but i think i'll begin with C/C++. it's an extremely difficult language to grasp, yeah, but i'm quite sure that if i grasp it now, it'll help me out with many things in the future, seeing as all languages seem to derive from it. plus, it's probably the hardest language to grasp, so once i actually learn it, it'll be something like smooth sailing from there! i'm gonna bookmark those python links though, they'll definitely come in handy. i'll probably start learning python after i get an understanding of C/C++.

I am glad that you chose to take up C/C++ learning for understanding programming a bit more. Most high level languages hide memory functionality from you and use a thing called "Garbage Collection". What this basically means is that it will manage all the memory for you, but more often than not this actually causes performance problems the larger your game becomes.

Languages that have Garbage Collection are okay for small projects, but those without will have a significant performance increase that is noticeable as games grow larger in both scale and depth. C++ has its own garbage collector, which is in itself off-putting.

What a lot of software programmers - particularly object-oriented ones - tend to think is that "Garbage Collection is necessary" or "Throwing Exceptions should be a good thing." The thing is, these concepts are what causes performance problems, and while this may not be noticeable at first on modern systems, write a complex mathematical algorithm and you will instantly see the difference.

Game programming should focus on performance, since you will need to learn optimal algorithms for your graphics rendering. If you're interested in the C++ route, you can try a video series on YouTube called Handmade Hero. This video series is about developing a video game from scratch (using barebones Windows API functionality), so it's pretty hardcore and I'm slowly going through the series myself.

Alternatively, if you're lazy you can try Haxe and OpenFL and target multiple platforms using that one language - Flash, Windows, Linux, Mac, iOS, Android. OpenFL is still in development and growing - at the moment, their focus is optimising and fixing the HTML5 target, but native and Flash outputs work as you would expect. Some functionality on native platforms may still be absent, however.

"Good programmers" are not necessarily good programmers, anyway. It is also very subjective once you get past the obvious:
1. Someone who is willing to learn new things.
2. Is able to work through their own and other peoples' code without assistance.
3. Can develop code without creating overhead (code that serves no practical purpose)
4. Write's classes and objects that are meaningful and only does what it says on the tin (don't over-extend the code from its main purpose)

These are just four of several more that would make someone a "good programmer" but even "good programmers" make plenty of mistakes and is often the reason why even AAA titles swarm with graphical glitches or bugs on release.


Ignorance will become the death of us.

BBS Signature

Response to What makes a good programmer? 2015-02-05 20:17:17


At 2/4/15 11:15 AM, brutalexcess wrote: Game programming should focus on performance, since you will need to learn optimal algorithms for your graphics rendering. If you're interested in the C++ route, you can try a video series on YouTube called Handmade Hero. This video series is about developing a video game from scratch (using barebones Windows API functionality), so it's pretty hardcore and I'm slowly going through the series myself.

WOW this looks really cool! i'm definitely following this. i should probably try to understand CLA's a little more before i event TRY to attempt this though, which is okay i guess since this guy predicts that the series will take about 2 more years to complete.

Alternatively, if you're lazy you can try Haxe and OpenFL and target multiple platforms using that one language - Flash, Windows, Linux, Mac, iOS, Android. OpenFL is still in development and growing - at the moment, their focus is optimising and fixing the HTML5 target, but native and Flash outputs work as you would expect. Some functionality on native platforms may still be absent, however.

pfft, heck no. i'm not that lazy!

"Good programmers" are not necessarily good programmers, anyway. It is also very subjective once you get past the obvious:
1. Someone who is willing to learn new things.
2. Is able to work through their own and other peoples' code without assistance.
3. Can develop code without creating overhead (code that serves no practical purpose)
4. Write's classes and objects that are meaningful and only does what it says on the tin (don't over-extend the code from its main purpose)

These are just four of several more that would make someone a "good programmer" but even "good programmers" make plenty of mistakes and is often the reason why even AAA titles swarm with graphical glitches or bugs on release.

you make really good points! and it looks like i do three of those things already (working on eliminating the overhead problem which i run into sometimes).

At 2/4/15 11:34 AM, dem0lecule wrote: C/C++ is a rough start for beginners. But you need it. You should try for more smooth and easier learning curve languages such as Python and Ruby. Java is somewhere in between. You will need it, too. Mobile and cross-platform development.

actually, i've been learning ruby over on codecademy. it's a really cool language, and has an interesting history! i think i'll use it to help me. i don't really like java though. i suppose i'd need it for mobile development, but is it possible to use other languages...?

Then web languages like JS (also learn how to use Node.js/JQuery) and HTML/XML. Database language like SQL and NoSQL. Web app language such as ASP and ASP.NET. Scripting language such as Bash/sh (Unix) and Powershell (Windows). Finally graphic languages like OpenGL and WebGL. Interesting matter, they seem to not related but you will have many of them cross the same path in the future. Better be Jack of all trades than none.

ya got that right. i have some experience with bash/sh, JS, HTML, and XML. none whatsoever on the others. codecademy has a course on each of these i think (idk about xml, but i'm okay with xml anyway) so i should be fine!

Response to What makes a good programmer? 2015-02-05 22:12:19


At 2/5/15 08:17 PM, PsychoZombii wrote: pfft, heck no. i'm not that lazy!

I just want to emphasize that there is a huge misconception going on here. First of all, it might look like it's the "lazy way" from someone who hasn't had much experience programming, and indeed to you, it would be the lazy way. You would have less to learn and you would be at a HUGE disadvantage to learn haXe in my opinion. It would let you get away with a lot of things.

Let me tell you why haXe is NOT the lazy way, however. In the professional industry, time is money, and the less time you spend on porting your code to a hundred different platforms with slightly different rules = less money spent = more money.

But, in the professional industry, you are expected to already have a firm understanding of the platforms you are porting your code to. And having a firm understanding means having an intimate knowledge of multiple languages and what is different about them on each platform. Which means you need to be able to do (or at least understand most) of the things that haXe can do, so that when you implement them into haXe you know what's going on.

Of course, knowing everything about that all the time is extremely difficult and time-consuming, which is why haXe is great for professionals. You can learn haXe, but don't count on it being your primary language.

actually, i've been learning ruby over on codecademy. it's a really cool language, and has an interesting history! i think i'll use it to help me. i don't really like java though. i suppose i'd need it for mobile development, but is it possible to use other languages...?

Unfortunately mobile languages are kind of ubiquitous. If you want to develop on Android you need to know Java, for iOS it used to be Objective-C and Cocoa but now it's Swift I believe, and Windows phone is C# or the .NET languages, although there might be some Java in there too. Java is one of those industry standards, for many areas, so learning it eventually will probably be necessary.

ya got that right. i have some experience with bash/sh, JS, HTML, and XML. none whatsoever on the others. codecademy has a course on each of these i think (idk about xml, but i'm okay with xml anyway) so i should be fine!

Unless you are planning on working with databases, don't worry too much about SQL. It's good to know but not entirely necessary unless you're in web dev or database management.


BBS Signature

Response to What makes a good programmer? 2015-02-07 18:24:53


At 2/5/15 10:12 PM, coln wrote: Unfortunately mobile languages are kind of ubiquitous. If you want to develop on Android you need to know Java, for iOS it used to be Objective-C and Cocoa but now it's Swift I believe, and Windows phone is C# or the .NET languages.

The interesting thing about Mobile development is, in a way, it's quite full-stack. While Android programming is done in Java, developers for that platform also need to learn Gradle, and SQLite is a big part of databases. There is also quite a bit of deep knowledge that has to go in to the platform itself, both with the XML layouts, and the libraries and API's that are specific to the OS and devices. There's also only so much that can be done on the device - most applications have to have some sort of back end layer, which can also be done in Java, but is more likely in a different web language.

Objective-C is still the standard for iOS, unfortunately Swift is still in the emerging stage. And not to come off in a way that sounds like "fuck Windows phone", but right now the market just isn't there. Maybe take a look in a few years, but dedicating time to Windows or Blackberry right now is not a great move.

I don't know a lot of people who are cross-platform for mobile development, but those that are usually don't use platforms like PhoneGap or hybrid mobile web apps. Many companies are starting to move away from the hybrid app model, and using more native developers. So I guess my suggestion, if someone would be looking into mobile development, is pick a platform and learn the native code for it. (Then, if you want to be cross platform, take a look at the other one after you've mastered the first.)


from what i gather, it sounds like learning Java is my best bet for mobile development. i actually don't like iOS like at all for personal reasons so i don't plan on developing for it, but i feel like something might come up where developing for iOS would be useful, even if i dont like it. even so, i find it hard to buy an apple product. not only do i not have the money, but i don't have the interest either, lol. android is love.

i dont know too much about SQL, but i hear it's really useful for things like p2p chat programs and the like, which i'm kinda interested in, so i'll probably have to learn that anyway.

i probably wont learn C# for quite a while, but i DO plan to learn that too. programs like FlashDevelop has gotten me really interested in the language. so if windows phone ever becomes more prominent, i'd be more than willing to jump in.

At 2/5/15 10:12 PM, coln wrote: You can learn haXe, but don't count on it being your primary language.

i see. well, haxe never interested me enough to really get into it anyway, heheh.

Response to What makes a good programmer? 2015-03-05 23:40:38


Let me help you.

At 1/28/15 05:10 AM, PsychoZombii wrote: Recently i've been programming a LOT in ActionScript 3. it's the very first language that i've gotten anywhere in, and if i had to tell you, i'd say that i'm just upper intermediate. i can at least solve the fizzbuzz problem lol. but a lot of times i realize AS3 alone won't get me anywhere, even if i become a really good indie dev or something using AS3 alone. I want to learn more powerful languages.

C/C++.
C#.
Ruby.
Python.
Java.

First thing is first, all languages are VERY VERY VERY similar. The difficult part, for me anyway, is learning new API(Libraries). C#/C++ are by far my choice. Ruby is junk in my honest opinion, Java is obsolete and Python is GREAT for beginners.

something that will get me hired somewhere good! but when i attempt to learn these languages, i tend to find them difficult (not counting java) and go back to AS3 to code. am i just not cut out to be a programmer? what happens if all i've been doing this whole time is just trying programming out? don't get me wrong, i LOVE the rush i get from making something, especially in code. i made an application updater for myself in adobe AIR yesterday and i'm getting turned on just thinking that i made it all by myself, even if it wasn't mind numbingly hard to do!

I love the rush too, and no it is not a judgement if you are cut out to be a programmer. If you want to just try it out, you probably won't make it far. You need to be on it everyday, and night for 2 weeks to a month straight and you will realize how easy it is.

even so, i get scared when i think about what my future will be like if i continue on my path to become a good programmer.
just for reference, what do you elite programmers think make a GOOD programmer?

What makes a GOOD programmer is proper code. The most efficient way to accomplish what you want to do, and following all the generally accepted programming format.

if you want to get good. Find out what you want to program(start small) break it into smaller steps. Then into smaller steps, and keep going until its down to one line sentences. If you look at it, it almost is code! The wonders of pseudo!!


This is a pretty helpful thread! I've been learning the basics of programming with C, but I'm definitely taking everything I read here into consideration.


Oh hai.

BBS Signature

At 1/28/15 05:10 AM, PsychoZombii wrote: i can at least solve the fizzbuzz problem

I looked up the fizzbuzz problem. It seems trivially easy.

if num%3 = 0 print fizz
if num%5 = 0 print buzz
if (num%3)&(num%5) print the number

Am I missing something?

I've known a lot of programmers, bad and good, and I wouldn't put solving this, easily, past any of them. Yet I see that this is a common interview question that weeds out bad programmers.


∀x (∃e (e ∈ x ∧ ∀x ¬(x ∈ e)) ∨ ∃y ¬∃e (e ∈ x ∧ ¬∃z (z ∈ y ∧ z ∈ e ∧ ∀x ¬((x ∈ y ∧ x ∈ e) ∧ ¬(x = z)))))

Response to What makes a good programmer? 2015-03-12 16:13:39


At 3/8/15 06:12 PM, NocturnalLodestar wrote: This is a pretty helpful thread! I've been learning the basics of programming with C, but I'm definitely taking everything I read here into consideration.

nice! i'm glad this thread helped someone other than me :>

At 3/5/15 11:40 PM, MikeBoss wrote: First thing is first, all languages are VERY VERY VERY similar. The difficult part, for me anyway, is learning new API(Libraries). C#/C++ are by far my choice. Ruby is junk in my honest opinion, Java is obsolete and Python is GREAT for beginners.

"java is obsolete" LOL
don't get me wrong, i really don't like java but it's definitely not obsolete considering you need it for android development!
ruby isn't that bad though. i think it's good for beginners who want to learn oop. it's pretty neat imho.

I love the rush too, and no it is not a judgement if you are cut out to be a programmer. If you want to just try it out, you probably won't make it far. You need to be on it everyday, and night for 2 weeks to a month straight and you will realize how easy it is.

i do that with as3 alot and you're right, it actually does teach you a lot
i'll try my hardest with other languages. part of the problem is my work schedule though.

What makes a GOOD programmer is proper code. The most efficient way to accomplish what you want to do, and following all the generally accepted programming format.

if you want to get good. Find out what you want to program(start small) break it into smaller steps. Then into smaller steps, and keep going until its down to one line sentences. If you look at it, it almost is code! The wonders of pseudo!!

that's what i do. i try not to break code down TOO far, because then it'll be easier to get disorganized :P

At 3/9/15 06:06 AM, sharpnova wrote: I looked up the fizzbuzz problem. It seems trivially easy.

if num%3 = 0 print fizz
if num%5 = 0 print buzz
if (num%3)&(num%5) print the number

Am I missing something?

I've known a lot of programmers, bad and good, and I wouldn't put solving this, easily, past any of them. Yet I see that this is a common interview question that weeds out bad programmers.

no you're not missing anything lol
it's not hard at all if you understand the question. but people seem to have trouble with it still. i don't know why, it's really REALLY simple. either they don't know programming at all or they're not as good at programming as they thought they were?

Response to What makes a good programmer? 2015-04-15 10:18:18


I started programming with web development (PHP, Javascript etc.), and I am looking to move more into application development. It really sounds like Python is an awesome step to take, and it will be my next one. I would not recommend starting out with mobile devices, though. I attempted to pick up Java and jump into droid development a while back and it didn't go very well.
Thanks for the input, all!


BBS Signature

Response to What makes a good programmer? 2015-05-03 01:27:28


Codecademy! Pick what you want to code and learn the languages pertaining to that.

Response to What makes a good programmer? 2015-05-08 16:19:58


At 3/9/15 06:06 AM, sharpnova wrote:
At 1/28/15 05:10 AM, PsychoZombii wrote: i can at least solve the fizzbuzz problem
I looked up the fizzbuzz problem. It seems trivially easy.

My interpretation is that it'll weed out the compsci grads who have never actually attempted any practical problem-solving with actual code. I think you need to be in the stage of ignorance about how little you know to actually apply for a programming job when you can't solve fizzbuzz, though. I think it's called the Dunning-Kruger effect.


At 5/8/15 04:19 PM, Mich wrote: My interpretation is that it'll weed out the compsci grads who have never actually attempted any practical problem-solving with actual code. I think you need to be in the stage of ignorance about how little you know to actually apply for a programming job when you can't solve fizzbuzz, though. I think it's called the Dunning-Kruger effect.

That's insane. If someone couldn't solve it I'd be more curious than disgusted.

But I suppose most graduates in anything but math or physics are generally pretty bad at math.

It disgusts me but I have to be open minded. Not everyone loves all these things like I do.

I guess I might even hire someone who failed this problem if they had the skills I was looking for. When I hire it's always been more about people skills and ego than their technical expertise.

There is literally nothing you need for day to day tasks in a programming job that can't be learned on the job. But if you have a big ego or suck at dealing with people in general (like the way I act online to study people's reactions and learn more about socializing), I'll end up having to fire you anyway.


∀x (∃e (e ∈ x ∧ ∀x ¬(x ∈ e)) ∨ ∃y ¬∃e (e ∈ x ∧ ¬∃z (z ∈ y ∧ z ∈ e ∧ ∀x ¬((x ∈ y ∧ x ∈ e) ∧ ¬(x = z)))))

Response to What makes a good programmer? 2015-05-09 07:42:18


I could write a sizeable novel about being a good programmer but i comes down mostly to this bunch of adjectives:
A great progammer is a passionate product-minded team-playing polyglot that is always learning.

With emphasis on the varius parts depending on your situation, Fx. being a team-player might not be important if you work independently but it is extremely important if you are a teamleader.

Also yes, definitely start working with other languages than AS3, i LOVE AS3, but there is no future in it anymore... My reasoning here :I

I would try Unity and learn C# and javascript if is was you, it is a fairly easy move from AS3.

Lastly if you are having problems learning a language, try picking a project that you think the language would be very well suited for and then commit to that project. In the past learning without a project has always problematic for my self.

I made a larger browser based image gallery without libraries when i wanted to learn javascript, i picked up C# game-jamming with Unity, PHP i learned because i needed to make websites etc, Java because i needed UDP sockets for a multiplayer game.

On the contrary those two Perl books i bought and read, i have never used and i cant recollect jack of what the language looks like.

//Sebb

At 1/28/15 05:10 AM, PsychoZombii wrote: Recently i've been programming a LOT in ActionScript 3. it's the very first language that i've gotten anywhere in, and if i had to tell you, i'd say that i'm just upper intermediate. i can at least solve the fizzbuzz problem lol. but a lot of times i realize AS3 alone won't get me anywhere, even if i become a really good indie dev or something using AS3 alone. I want to learn more powerful languages.

C/C++.
C#.
Ruby.
Python.
Java.

something that will get me hired somewhere good! but when i attempt to learn these languages, i tend to find them difficult (not counting java) and go back to AS3 to code. am i just not cut out to be a programmer? what happens if all i've been doing this whole time is just trying programming out? don't get me wrong, i LOVE the rush i get from making something, especially in code. i made an application updater for myself in adobe AIR yesterday and i'm getting turned on just thinking that i made it all by myself, even if it wasn't mind numbingly hard to do!

even so, i get scared when i think about what my future will be like if i continue on my path to become a good programmer.
just for reference, what do you elite programmers think make a GOOD programmer?

A bit too generic of a response, but a good programmer always thinks analytically, logically, and mathematically. Being a good programmer isn't about remembering and regurgitating a million function names. If you can draw a storyboard of the actions that need to occur and in what order to achieve your task then you can make it as a programmer. The rest is just searching documentation and syntax.


Merkd.com - It Pays to Play

Earn real money by betting and investing; or, sponsor, challenge, compete,

recruit, communicate, network, earn money playing games, and much more.


A lot of people mentioned the ability to learn new things, logical thinking, problem-solving, etc. In addition, I think good programmers need 2 things: patience and tenacity. Even when you code perfectly, there's going to be some feature you want to add that goes beyond the boundaries of the framework. Then you need to code by trial-and-error, which can be frustrating.

I think there's too much emphasis on particular programming languages. I program (not games) for a living, and I often end up using languages I never saw before and may not use ever again.

Whatever language you start with, you need to get a good grasp on fundamental data structures (arrays, objects, etc.) as well as common algorithms and good design practices (OOP, MCV, functions, etc.). All languages that I've used have those core ideas. Once you nail that in one language, it's easy to code in another. You don't even have to "learn" the new language, just its syntax and core functions.