Looking for ways to better my Programming skills.

Yoguur8989

Member
OP
Newcomer
Joined
Mar 16, 2020
Messages
7
Trophies
0
Age
22
XP
82
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
33
XP
79
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,887
Trophies
2
Age
44
XP
5,520
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
33
XP
79
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
36,798
Trophies
3
XP
28,321
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
7,025
Trophies
3
Location
Sweden
XP
7,343
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,887
Trophies
2
Age
44
XP
5,520
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
16
Trophies
0
Age
33
XP
115
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
36,798
Trophies
3
XP
28,321
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,979
Trophies
2
XP
2,565
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,708
Trophies
1
Age
40
XP
4,311
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
104
Trophies
0
Age
33
XP
321
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,067
Trophies
1
Location
US
Website
mogbox.net
XP
6,076
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
445
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
20
XP
54
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.
 

Deleted member 591971

Well-Known Member
Member
Joined
Apr 10, 2022
Messages
216
Trophies
0
XP
922
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,619
Trophies
1
XP
2,213
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
38,471
Trophies
3
XP
29,116
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.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: https://www.youtube.com/watch?v=pnRVIC7kS4s