GPWiki.org
GPWiki.org
It is currently Fri May 24, 2013 3:13 pm

All times are UTC




Post new topic Reply to topic  [ 5 posts ] 
Author Message
 Post subject: first year programmer
PostPosted: Mon Apr 23, 2012 3:47 am 
Rookie

Joined: Sun Apr 22, 2012 3:55 am
Posts: 4
So like the title says i have been programming for about a year (shy of a couple months). I have learned alot about the concepts and have done many programs. Currently i am studying Android programming aswell as GUI- JAVA, My question is this. If i know java and what to be a Game Programmer and or A Network Security protector/ white-hat hacker. What should i focus on and what should i become Proficient in. Your wisdom is much appreciated.


Top
 Profile  
 
PostPosted: Mon Apr 23, 2012 9:15 pm 
Dexterous Droid
User avatar

Joined: Wed Aug 18, 2004 7:40 pm
Posts: 3735
Location: South Africa
I can tell you what I think would be ideal. This is just theorycrafting though, in practice you can get away with not having a lot of these qualities if you're doing something very special / unique.

For game programming, sharpen up on your maths, especially geometry. You need to be comfortable with first year university maths if you want to get into the interesting 3D stuff. Even for 2D stuff, if you have a problem and can define it mathematically, you'll want the tools to be able to the solve it without busting a gut and wishing you'd paid better attention (which is where I'm at ;) ) Maths is important for graphics programming, not so much for gameplay stuff. These days you can get away with mediocre mathematical ability by using libraries for physics, etc. and that's what I do.

Then you'll want to have experience playing a lot of games and know what's out there. What can change the nature of a man? Be familiar with gaming's history and development so you don't reinvent The Wheel 8: Zombie Revelations. And that experience has to translate into getting to understand the underlying mechanics of gameplay, why are things happening like this? Why do I enjoy Diablo 2 but not Sacred 2? Then some theory type stuff, what is positive feedback, negative feedback and cybernetics? I would also recommend becoming familiar with how the DND rules work. This is something I don't really understand, but I do know that they are the basis or inspiration for the combat rules of almost all computer RPGs out there. Write down all your ideas and see which ones sound silly in a month's time.

For general programming, you want to learn about data structures and algorithms. Data structures: When is it correct to use a vector, binary tree, hash map? What's the difference between a stack and a queue? Algorithms: How do I express the complexity of an algorithm with big-O notation? How do I do the following: sort numbers, find shortest paths on graphs, efficiently search for strings, compress data? When do I apply the strategies of: brute-force, space vs time trade-off, divide and conquer, recursion and dynamic programming, greedy algorithms? I wouldn't have learned about most of this stuff without going to university, but that doesn't have to stop you from buying "The Design and Analysis of Algorithms" by Levitin and teaching yourself. Remember: this stuff is not complicated, but applying it is. Practice is the only solution.

Also under general programming: learn how compilers and operating systems work. For this, you'll need to have a very high level understanding of how computer hardware works (CPU, memory, hard drives). You'll end up learning how the stack and the heap work, memory management and a bunch of pretty cool / complicated algorithms and data structures that compilers use. You can skimp on this and previous paragraph a lot, but code quality and speed will suffer.

Going a bit beyond actual programming to code architecture: read Code Complete and the light of understanding shall shine down upon OOP for you. I'll leave it at that, OOP is a topic by itself and more related to software, rather than programming. Skimping on this will make your projects impossibly difficult to maintain and will make your team-mates hate you :lol

_________________
Whatever the mind can conceive and believe, it can achieve


Top
 Profile  
 
PostPosted: Mon Apr 23, 2012 9:17 pm 
Dexterous Droid
User avatar

Joined: Wed Aug 18, 2004 7:40 pm
Posts: 3735
Location: South Africa
*double posting to get more than 5 URLS in :)

For network security stuff, you really need to have a particular kind of warped mind otherwise every problem you encounter will be a torturous bottom-less pit. If wading through assembler, Wireshark logs and binary data files is a turn on, go for it. I find this stuff incredibly interesting, but every time I delve into the nitty gritty I just get incredibly frustrated. Just a heads up, don't bother downloading any hack tools because you don't need them and they're probably trojans. Everything you need is widely available and a lot is open source. You definitely would want to become comfortable using Linux and the command line, which is another thing I found painful. C is also a requirement, along with a rapid development language like perl or python. Unfortunately, you'll want to become acquainted with database software as well. SQL injection is probably the most viable entry to most web servers. SQL Injection and buffer overflow are very interesting (check wikipedia)! Obviously, you'll need to know how networking works backwards and forwards.

Most importantly: find people who know much more than you in real life. It is incredibly helpful to have regular face time with people way ahead of you. Second prize is to have online people that you can communicate with.

Lastly, combat boots, trench coat, cool shades 8)

_________________
Whatever the mind can conceive and believe, it can achieve


Top
 Profile  
 
PostPosted: Fri May 04, 2012 5:35 am 
Rookie

Joined: Sun Apr 22, 2012 3:55 am
Posts: 4
Hey Igthorn, thanks on the detailed information about the topics I should learn. I will be taking a course in data structures in the fall which will give me that gave time t my university. About the math, I just passed calculus 2 wih a C :| ( will be taking calc 3) but I will definitely brush up on my math. Just wanted to say thanks for the reply this is exactly the kind of response I was hoping for.


Top
 Profile  
 
PostPosted: Wed May 09, 2012 8:52 pm 
Harmlessness does no harm
User avatar

Joined: Tue Sep 14, 2004 8:37 pm
Posts: 3809
Location: Ferriday, LA, US
blk wrote:
About the math, I just passed calculus 2 wih a C :|


Don't let it fool you. My math IQ is 80, yet I understand how calculus works (at least concepts like sine/cosine, Euler theory, Pythagorean theory, etc.). It seems that when I try to apply numbers and words to the concept, that's where things break down. I learned how to "get it" by taking the functions for sin(), cos(), and so on and just experimenting (after at least a decade of just saying "screw it" and just plugging in random numbers), and now I know exactly how those functions work and what they are for. And I can even figure out the numbers. :)

I still suck at putting it into words, but it's no longer a complete mystery. If the words and numbers don't help, experiment like crazy and figure it out. Seeing how it works tends to be much more helpful than trying to read how it works. :)

(And my math IQ is 80, but my other IQ scores range in the 150-180 area, where 100 is considered average/median... which leads me further toward the idea that it's numbers that get in the way!)

_________________
What most people don't understand about "enlightenment" is that it is not an end-goal; but where you find yourself just before taking a new "first step."


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 5 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group