Looking for ways to better my Programming skills.

Yoguur8989

Member
OP
Newcomer
Joined
Mar 16, 2020
Messages
7
Trophies
0
Age
20
XP
62
Country
United States
Hello GBATemp! I am really interested in programming and I am really passionate about it. I feel like all of the code I write though is complete garbage and I want to make it... well... not that.

I was wondering if y'all could point me towards some resources that would help me make my code better. I have a basic understanding of a few languages, namely C++, Java, JavaScript, and Python and I would like to try to continue to push my experience with becoming better using those languages, Python and C++ in particular because I want to be able to develop homebrew apps for the 3DS and Switch as well as do things like create Minecraft mods and Spigot plugins (which I know I programmed in Java)

If you could point to specific communities that focus on developing these sort of things and resources that could possibly help me gain a better understanding of all the concepts I need to understand. Also if you could point me to any communities that would help me, I'd be grateful for that as well!

Also, I'll add to this thread as I am given resources or if I find any resources that I personally find helpful just in case someone else needs them in the future.
 

Zenarith

Member
Newcomer
Joined
Mar 23, 2020
Messages
5
Trophies
0
Age
31
XP
59
Country
Canada
I learned HTML, CSS and JavaScript through W3Schools.
I studied Java but mostly just books, W3Schools can teach you Java but it looks overwhelming. Good for concepts.|
I tried C++ but no success...
I want to be a good coder myself, but I find youtube videos teach you how to do one thing but nothing more than that.
Books teach you everything but it's hard to commit...
If you can find a site that teaches in Lessons/Courses (1 Day of Learning at a Time) I'd like to learn Java or Python.
I have no money for school, but I was thinking... If we find a pro that wants to teach and "Collect" 10 Students, we can pay a 10th of what we'd pay for tutoring, maybe that sounds stupid, I don't know.

Hope to hear some suggestions.
 
  • Like
Reactions: Yoguur8989

eyeliner

Has an itch needing to be scratched.
Member
Joined
Feb 17, 2006
Messages
2,300
Trophies
1
Age
42
XP
4,115
Country
Portugal
Choose a couple languages to learn until intermediate/advanced.
Something like Javascript (a damned weird language, but basically a necessity for HTML5)
Python/Java/C# for desktop development.

Get fluent, develop solutions, something small like substitues for small scale software you use, like a calculator, picture viewer, etc... and go from there.
 
  • Like
Reactions: Yoguur8989

Zenarith

Member
Newcomer
Joined
Mar 23, 2020
Messages
5
Trophies
0
Age
31
XP
59
Country
Canada
I'd like to learn Java to one day make a RuneScape Private Server.
I'd like to learn C++ to one day make a GTA San Andreas Remake...

Which is easier to learn? (My guess Java)
And do you have any suggestions on which website teaches the best? (Preferably without having to pay money)
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
35,306
Trophies
2
Website
trastindustries.com
XP
24,985
Country
United Kingdom
It will depend what level you are at. While you say "a basic understanding of a few languages" I have to keep in mind that self assessment of abilities is a tricky one.

Interview questions if they are well designed ( https://www.youtube.com/playlist?list=PL96C35uN7xGLLeET0dOWaKHkAlPsrkcha has several things you might meet, or be asked to explain in them or exams) often do well and will get you to tighten up your code as you learn to solve those better.

"I feel like all of the code I write though is complete garbage"
Why is that?
Also does it do the job you need it to? Does it do in a time you can deal with? Can you return to it 6 months down the line and figure out what you are doing? Can you send the code to someone else and have them figure out what it does? If asked you to expand it to handle a million entries where you are presently doing 10 then what goes?
For example I know all sorts of fancy ways of sorting data (and far less than some in this field) but good old bubble sort might well do rather than spend 6 hours optimising a sort for a simple 15 item output.

You might also like "code golf" and coder contests. Normally they have a very strict time limit but nothing wrong with giving yourself say a weekend to solve the problem.

Do you like any open source projects? They are usually in need of help, and you might just write up some documentation. You might also try porting it to another language.
 

Issac

Iᔕᔕᗩᑕ
Supervisor
Joined
Apr 10, 2004
Messages
6,973
Trophies
1
Location
Sweden
XP
6,700
Country
Sweden
Wall of text incoming, but you don't have to read it "in depth" :P

Learn the concept of coding.

Learn problem solving.

Pick a language, any language. Java is quite easy to get going with visual output. Give yourself a task, like what @eyeliner suggested: a calculator for example.
Then write down in English what you want to do. A to-do list basically. What do you need?
  1. You need a window.
  2. you need a "display" to show input and output.
  3. you need buttons:
    1. numbers
    2. operators
    3. more advanced stuff? (optional)
  4. you need to make sure things won't break.
Now, go through each step, and use a book, or internet, or a video... whichever resource you want. "How do I create a window?" look it up. Try, get a window working.
How about a display? It needs several steps:
  1. Display a string of characters, "12+34-5" for example. How do you display a string?
  2. When pressing a button (that you maybe don't have yet) how do you ADD text/numbers to the string? Or append, as it's called. Search it up.
  3. When pressing a button (that you still don't have yet), the = button. How do you clear the string, and display the result instead? Search it up.
  4. Write down all the steps as detailed as you can, and use "pseudo code" if you want.
Now, do buttons!
  1. Create one number button: "1" is a good place to start. How do I do a button?
  2. How do I do anything when I press a button, what's an event handler? search it up!
  3. Ooooh, so now I can press the button, and it adds information to one variable, and also appends to the string? Or does it? Go back to the display part and fix it if you need to!
  4. add another button - and repeat.
  5. add a clear button!
    1. What does a clear button do?
    2. Delete the text string.
    3. Clear the variables and any memory.
    4. How do I do this? search it up!
  6. add an operator, the + for example.
    1. How do I add numbers?
    2. how should I add to the string?
    3. blah blah.
  7. add another operator.
  8. add the =
  9. Go back to the display part, and revise stuff that needs revising... I doubt you finished the display before creating any buttons!
Okay... Display and buttons.
Go back and forth, you'll need to fix things over and over again, add details and improvements.
Try to write down as detailed as possible though, what you want to do and how you think you can solve it.

There's more to do. After you have these buttons, what about listening to the keyboard if you wanna type in numbers instead of clicking buttons? So you'll go back, and edit and edit.
But kinda like this process. If you do this, you will get a feeling for how to code. how to think about solving an issue, what tools you have in your toolbox.
I said that you can use Java, as an example. But did I write anything that was specific to Java in this "to-do" list? nope. It's the same process of solving the issue, finding out WHAT you want to do.
Then you can just search how to create a window in Java, how to create a window in C++, how to create a window in C#, and so on... You know the basic structure, now you just need a "dictionary" to translate it into whichever language you want to use.

Does it make sense? I hope it does.

So: Make an outline of what you want to do. Refine the outline, add details. Write in English. Then write in "pseudo code", it's a bit easier when you're used to it :P
Then start where it feels most logical (which should be easy to find with your outline / pseudo code).
Now look up how to do whatever you want to do, in whichever language you want to do it.

Knowing how to solve a problem you're facing is more important than knowing thousands of functions and stuff by heart. In my opinion. Of course, fluency in a language comes with exposure, so you'll be fluent soon enough if you just use it.
 

eyeliner

Has an itch needing to be scratched.
Member
Joined
Feb 17, 2006
Messages
2,300
Trophies
1
Age
42
XP
4,115
Country
Portugal
I'd like to learn Java to one day make a RuneScape Private Server.
I'd like to learn C++ to one day make a GTA San Andreas Remake...

Which is easier to learn? (My guess Java)
And do you have any suggestions on which website teaches the best? (Preferably without having to pay money)
Quit now if that is your mindset. There is no way a single developer pulls that one off. Learn the basics and start building from there.
 
  • Like
Reactions: cyo_the_vile

cyo_the_vile

Member
Newcomer
Joined
Sep 22, 2019
Messages
12
Trophies
0
Age
31
XP
53
Country
United States
He hit it head on. Don't go in with tunnel vision. You need to enter learning C/C++ with the intent of actually learning how the language works and solve problems. Solving problems is perhaps the most important thing you need to do as it puts you in the correct mindset.

You won't recreate GTA SA as a single person. There are hundreds of people nowadays that are on teams for creating games. For ports its less but still a substantial team. Just enter this at first by trying to solve a ton of problems.
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
35,306
Trophies
2
Website
trastindustries.com
XP
24,985
Country
United Kingdom
He hit it head on. Don't go in with tunnel vision. You need to enter learning C/C++ with the intent of actually learning how the language works and solve problems. Solving problems is perhaps the most important thing you need to do as it puts you in the correct mindset.

You won't recreate GTA SA as a single person. There are hundreds of people nowadays that are on teams for creating games. For ports its less but still a substantial team. Just enter this at first by trying to solve a ton of problems.

Now while I would probably not rate the OP's chances of doing things I would say with the increased power of modern devices and increasing quality of procedural generation that it might hit a point where a small team or possibly individual could land on something like a GTA clone.
 

Coto

-
Member
Joined
Jun 4, 2010
Messages
2,922
Trophies
1
XP
2,308
Country
Chile
Rule Number 1 is don't ask, just do it.

The basics:
Now you need to understand how machines work in general. Thus you need to get familiar with programming and whatever language comes in. You can also reverse engineer code and learn most stuff this way.

The intermediate:
Learn to read other people's source code, and your problem solving skills must be extremely on par with maths. This way you can recreate other algorithms, and "project them" into your problem solving scenario, through the machine/language.

The advanced:
Game development is another topic because you deal with Artificial Intelligence, and you must be quick to perform your own "projections", taking for granted nobody will really help you out if you desire to add a custom feature which isn't open source or if it's patented.


For instance the Worms PC game (and clones derived from it) has simple 2D topological physics. Thus, when a weapon detonates it deals damage to terrain and other enemies depending on speed/force/angle coordinates.

GTA 3D is somewhat similar. And no way you can pull off that engine alone given all the custom physics such game has. Given that engine was made by dozen of programmers
 
  • Like
Reactions: ZipMartin

blawar

Developer
Developer
Joined
Nov 21, 2016
Messages
1,705
Trophies
1
Age
39
XP
4,281
Country
United States
Don't read any scene code. Its generally the worst code I have seen in my career. Learn to code using more traditional methods.
 

WarioWaffles

Well-Known Member
Member
Joined
Sep 27, 2014
Messages
100
Trophies
0
Age
32
XP
180
Country
United States
Work through small game tutorials, google excessively and obsessively and find tuts that give completed code and repurpose and play with it to get it to do what you want.
 

Joom

 ❤❤❤
Member
Joined
Jan 8, 2016
Messages
6,020
Trophies
1
XP
5,906
Country
United States
I really hate when people suggest C#, or any other .Net dependent language. These are *not* good languages to learn unless you're lazy. They'll only compile on Windows with Windows specific libraries, and are easily reverse engineered. Of course there's Mono, but we all know that's a joke. If you want something with a GUI, look into Delphi, or C++ with Qt.
 

KonPet

Active Member
Newcomer
Joined
May 2, 2020
Messages
31
Trophies
0
XP
347
Country
Germany
Do things that you're genuenly interested in. For me it's homebrew development on NDS (although I'm not really good at it yet), for quite some time it was making a calculator in python with custom syntax that could generate lists, plots, etc and that could do lot's of stuff a normal calculator wouldn't be able to do. While doing such a project, you might find it pretty easy and it doesn't take much time to complete, but on other projects you might get stuck and have to google a lot, but both of them are fine, because in the first case, you see what you're already capable of which can give you motivation because you think, that you're already pretty good, which is correct and good, and in the second example you learn how to gather the information you need, as googling certain things isn't very easy. An example for a thing I wanted to google that was pretty hard to find answers to for me was how to do vector calculation in c++. The problem is, that c++ vectors are a certain type of dynamic arrays, and not the vectors using coordinates.

I hope you understand what I'm trying to say here,
Konstantin
 

pottsie283

Member
Newcomer
Joined
May 3, 2020
Messages
15
Trophies
0
Age
19
XP
44
Country
United Kingdom
I started with Python since it was the first language that I studied in depth for my A-Levels, but I've had experience with HTML/JavaScript and am currently doing a CodeAcademy course for C++. I'm quite comfortable coding with Python, but obviously once you use more libraries; there's of course a learning curve you have to go on like with everything else in programming.

I'd like to learn Java to one day make a RuneScape Private Server.
I'd like to learn C++ to one day make a GTA San Andreas Remake...
I get that you have ambitions, that's fine. But I agree with the others; you have to be realistic. I've been into programming for about a year or two now and can make a semi-decent program with a GUI on Python and 'Hello World' on c++ at the moment. I want to build better programs, but to get to that point it will take a very long time.
I feel like all of the code I write though is complete garbage
It's not garbage if it works.
If you could point to specific communities that focus on developing these sort of things and resources that could possibly help me gain a better understanding of all the concepts I need to understand
Stack Overflow.
 

aerglass

Well-Known Member
Newcomer
Joined
Apr 10, 2022
Messages
89
Trophies
0
Age
42
Location
earth
XP
194
Country
United States
short answer: View resources, make stuff and that how is that you learn, mistakes make you stronger!

long answer: there is not a "Magic Trick" to make yourself a better programmer, i learned from scratch (using C) out of nothing, i made horribly bad code. I kept doing stuf and learned with time, spent time on documentation, 25 year old websites, and all of that stuff made me better, more eficient, which then i was able to make a library called PA2lib (for nds development, never use it as you main, it is for compiling older palib proyects), and just kept doing stuff, maintaining PA2lib, making games and all of that.
 

cracker

Nyah!
Member
Joined
Aug 24, 2005
Messages
3,612
Trophies
0
XP
2,135
Country
United States
For me, messing with others' bigger projects first gets me entertained enough to keep looking under the hood and altering things until I understood the syntax, APIs, etc. It may not be for everyone, though, since I know a wall of code can be intimidating. I suggest looking at one (or all) of the RE GTA engines so you can understand the general program flow.
 

godreborn

Welcome to the Machine
Member
Joined
Oct 10, 2009
Messages
31,609
Trophies
2
XP
21,053
Country
United States
For me, messing with others' bigger projects first gets me entertained enough to keep looking under the hood and altering things until I understood the syntax, APIs, etc. It may not be for everyone, though, since I know a wall of code can be intimidating. I suggest looking at one (or all) of the RE GTA engines so you can understand the general program flow.
that's probably the best thing to do considering starting from nothing may be even more difficult.
 
General chit-chat
Help Users
  • KenniesNewName @ KenniesNewName:
    My life isn't proper
    Gift
  • x65943 @ x65943:
    first of all, there should be exactly zero reasons to place your sweaty balls on any of the equipment - generally you are supposed to wear clothing at the gym
    Gift
  • KenniesNewName @ KenniesNewName:
    You aren't going to the right gym if you need to wear clothes
    Gift
  • KenniesNewName @ KenniesNewName:
    Ball sweat drops down like normal sweat if your balls are always dry I'd recommend a doctor
    Gift
  • KenniesNewName @ KenniesNewName:
    We're talking about exercise balls of course
    Gift
  • x65943 @ x65943:
    what to do if I am a doctor
    Gift
  • KenniesNewName @ KenniesNewName:
    Re-read WebMD articles
    Gift
  • KenniesNewName @ KenniesNewName:
    I got myself a cheapo steering wheel cover here's to hoping the sun doesn't burn my finger tips over hot steering wheels
    Gift
  • x65943 @ x65943:
    I have never experienced that
    Gift
  • x65943 @ x65943:
    just where do you live mate
    Gift
  • KenniesNewName @ KenniesNewName:
    Midwest weathers been like 90 all week
    Gift
  • KenniesNewName @ KenniesNewName:
    We don't have garage parking areas at the apartment either so my car bakes in the sun
    Gift
  • KenniesNewName @ KenniesNewName:
    Midwest weather is so bipolar in the summer
    Gift
  • x65943 @ x65943:
    also in midwest, and today at least was really nice - in the 70s with light drizzle and good cloud cover
    Gift
  • x65943 @ x65943:
    have been quite a few scorchers this year tho
    Gift
  • KenniesNewName @ KenniesNewName:
    Depends on the area I'm more up north
    Gift
  • KenniesNewName @ KenniesNewName:
    Supposed to be in the 80s all next week
    Gift
  • Mariposa @ Mariposa:
    hiii! how's everyone doingg
    Gift
  • Dark_Phoras @ Dark_Phoras:
    Hi, I'm fine, how are you?
    Gift
  • Dark_Phoras @ Dark_Phoras:
    Good morning folk
    Gift
  • Dark_Phoras @ Dark_Phoras:
    Everyone is sleeping, I wonder if it's a holiday in the other countries as well
    Gift
  • The Real Jdbye @ The Real Jdbye:
    no, it's just the universal internet dead zone
    Gift
  • The Real Jdbye @ The Real Jdbye:
    and a monday
    Gift
  • Dark_Phoras @ Dark_Phoras:
    It's a holiday in a lot of countries, I checked in the meantime. This is usually one of the most moved periods of the day
    Gift
  • Dark_Phoras @ Dark_Phoras:
    It marks the death of Shmi, Anakin's mother
    Gift
    Dark_Phoras @ Dark_Phoras: It marks the death of Shmi, Anakin's mother